Подтвердить что ты не робот

Сокеты домена PostgreSQL UNIX против сокетов TCP

Интересно, если соединения сокета домена UNIX с postgresql быстрее, чем tcp-соединения из localhost с высокой скоростью concurrency, и если да, то насколько?

4b9b3361

Ответ 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, поэтому ответ на большинстве систем не имеет значения никому. Однако это никоим образом не является стандартом - именно так обычно это делается, поэтому вы не должны зависеть от этого.