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