Подходит ли PostgreSQL для одной ОС? Это лучше в Linux, чем в Windows?

26

Я работал PostgreSQL на Windows Server 2003 без проблем и быстро, так что, чтобы ответить на мой собственный вопрос, кажется, хорошо.

Однако я собираюсь запустить новый проект и рассматриваю возможность использования Linux-бокса, поскольку стабильность и производительность имеют решающее значение. Поскольку PostgreSQL, по-видимому, в основном разрабатывается для дистрибутивов Linux, может быть, лучше придерживаться Linux?


источник
2
Выбор платформы - это функция системного администратора, даже если она выполняется разработчиком.
araqnid
Связано: serverfault.com/questions/99068/…
ChristopheD
Мне кажется, что расширения pg упакованы для Linux, прежде чем они для Windows.
Нил Макгиган

Ответы:

46

PostgreSQL определенно будет работать быстрее в Linux, чем в Windows (и я говорю это как один из тех, кто написал его для Windows-порта). Он разработан для архитектуры в стиле Unix и реализует эту же архитектуру в Windows, что означает его делает ряд вещей, которые не предназначены для Windows. Это работает отлично, но он не выполняет , а также.

Например, PostgreSQL использует модель «процесс на соединение», а не многопоточность. Windows предназначена для работы с потоками. Если ваше приложение выполняет много подключений и отключений, оно, безусловно, будет работать значительно медленнее в Windows, например.

Есть также некоторые предположения относительно файловой системы, которые не совсем в пользу NTFS.

Одна вещь, о которой вам действительно нужно подумать - если вы работаете в Windows, большинство антивирусных продуктов будут давать сбои при использовании с PostgreSQL, потому что они не используются для такого типа рабочей нагрузки (например, 1000 различных процессов, читающих и записывающих в один и тот же файл). через разные ручки). Это означает, что настоятельно рекомендуется всегда удалять любой антивирус, если это возможно (просто отключить его или исключить процессы / файлы PostgreSQL часто недостаточно). И это не только по причинам производительности, но и стабильности под нагрузкой.

Магнус Хагандер
источник
Благодарность! Приятно иметь авторский ответ, хотя в моем случае придерживаться Windows звучит нормально: у меня очень мало подключений и нет антивируса (мне они тоже не нравятся). Производительность тоже была отличной: я думаю, что кеширование Windows и скорость ввода-вывода (когда у вас установлены последние версии драйверов) мне в этом помогают ..
Было бы неплохо увидеть некоторые реальные показатели производительности ...
1
Кстати, использование пула соединений будет особенно полезно в Windows из-за больших затрат на создание / уничтожение процессов.
Крейг Рингер,
Я делал параллельные сравнения PostgreSQL в Windows и Linux в старые 8,1 и 8,2 дней. Для нашей загрузки Linux был примерно на 50% быстрее. Неясно, насколько это было связано только с сетью, потому что клиенты находились в отдельном блоке и использовали один и тот же код Java для тестирования пропускной способности сети при открытом соединении, который работал на 30% быстрее, когда обе стороны были Linux, чем когда обе стороны были Окна. Интересно, что когда одна сторона была Linux, а другая - Windows, она была на 15% медленнее, чем обе стороны Linux.
kgrittn
2

На это трудно ответить: как заметил Кен, Postgres не делает никаких различий между ОС, и он так же стабилен / нестабилен в Windows, как и в Linux.

Единственный реальный ответ на этот вопрос: попробуйте.

Настройте сервер Linux и сервер Windows с одинаковыми спецификациями, используйте одинаковый объем данных на обеих машинах и запустите свои тесты.

PS: у этого есть близкие голоса, потому что это может быть лучше спросить в serverfault

DrColossos
источник
Это лучше на ServerFault? Я бы отнес это к проблеме программного обеспечения для разработчиков, а не к системному администратору.
1
Это не проблема программного обеспечения, ни одному разработчику не нужно беспокоиться о своем SQL: PostgreSQL использует тот же SQL в Linux, как и в Windows.
Фрэнк Хейкенс
2

Насколько я понимаю, для того же оборудования вы получите лучшую производительность в Linux, чем в Windows. Кроме того, хотя Postgres работает на Windows, он работает на * nix гораздо дольше. YMMV конечно в зависимости от вашей ситуации.

Действительно хорошим справочником по производительности Postgres является «Высокая производительность PostgreSQL 9.0» ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Название является немного неправильным, поскольку оно охватывает не только версию 9.0.

gsiems
источник
-1

AFAIK Postgres не различает, они не наносят ущерб функциям в Windows, или что-то в этом роде. Так что в Postgres нет ничего, что требовало бы Linux.

Возможно, вам лучше спросить о Linux. против Windows как общей серверной платформы.

МНЕНИЕ: Но за мои деньги сервер всегда работает под управлением Linux. Никогда бы не мечтал поставить критически важное серверное программное обеспечение для Windows. Просто мои 2 цента. Конец Мнения.


источник
stability and **performance** are crucial
Владислав Раструсный
Прочтите другие ответы, чтобы понять, почему эта догадка при ответе неверна. Пожалуйста, рассмотрите возможность удаления ответа.
Сэм