Интересно, если соединения сокета домена UNIX с postgresql быстрее, чем tcp-соединения из localhost с высокой скоростью concurrency, и если да, то насколько?
Сокеты домена PostgreSQL UNIX против сокетов TCP
Ответ 1
Сокеты домена UNIX должны обеспечивать лучшую производительность, чем сокеты TCP через интерфейс loopback (меньше копирования данных, меньше переключателей контекста), но я не знаю, можно ли продемонстрировать повышение производительности с помощью PostgreSQL.
Я нашел небольшое сравнение в списке рассылки FreeBSD: http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html.
Ответ 2
Основной разработчик Postgres Брюс Momjian блог об этом тему. Momjian заявляет: "Обмен сокетами Unix-домена значительно быстрее". Он измерил производительность сети запросов, указав, что локальный доменный сокет был на 33% быстрее, чем использование стека TCP/IP.
Ответ 3
Я считаю, что сокеты домена UNIX в теории дают лучшую пропускную способность, чем TCP-сокеты на интерфейсе loopback, но на практике разница, вероятно, незначительна.
Данные, переносимые сокетами UNIX, не должны проходить вверх и вниз по уровням стека IP.
re: Александр ответ. AFAIK вы не должны получать не более одного переключателя контекста или копии данных в каждом направлении (т.е. Для каждого read()
или write()
), поэтому я считаю, что разница будет небрежной. Стек IP не нужно копировать пакет при перемещении между слоями, но ему приходится манипулировать внутренними структурами данных для добавления и удаления заголовков пакетов более высокого уровня.
Ответ 4
afaik, unix domain socket (UDS) работает как системные каналы, и он отправляет ТОЛЬКО данные, а не отправляет контрольную сумму и другую дополнительную информацию, а не использует трехстороннее рукопожатие в качестве сокетов TCP...
ps: возможно, UDS будет быстрее
Ответ 5
Сокеты TCP на локальном хосте обычно реализуются с использованием сокетов домена UNIX, поэтому ответ на большинстве систем не имеет значения никому. Однако это никоим образом не является стандартом - именно так обычно это делается, поэтому вы не должны зависеть от этого.