¿PostgreSQL es adecuado para un sistema operativo? ¿Es mejor en Linux que Windows?

26

He estado ejecutando PostgreSQL en Windows Server 2003 sin problemas y es rápido, por lo que responder a mi propia pregunta parece estar bien.

Sin embargo, estoy a punto de lanzar un nuevo proyecto y estoy considerando usar una caja de Linux, ya que la estabilidad y el rendimiento son cruciales. Dado que PostgreSQL parece estar desarrollado principalmente en distribuciones de Linux, ¿tal vez sería mejor quedarse con Linux?


fuente
2
elegir una plataforma es una función sysadmin, incluso si la realiza un desarrollador.
araqnid
Relacionado: serverfault.com/questions/99068/…
ChristopheD
Me parece que las extensiones pg están empaquetadas para Linux antes que para Windows.
Neil McGuigan el

Respuestas:

46

PostgreSQL definitivamente se ejecutará más rápido en Linux que en Windows (y lo digo como uno de los tipos que escribió el puerto de Windows ...) Está diseñado para una arquitectura de estilo Unix e implementa esta misma arquitectura en Windows, lo que significa que hace una serie de cosas que Windows no está diseñado para hacer bien. Se trabaja muy bien, pero no funciona tan bien.

Por ejemplo, PostgreSQL usa un modelo de proceso por conexión, no subprocesos. Windows está diseñado para hacer subprocesos. Si su aplicación se conecta y desconecta mucho, definitivamente se ejecutará significativamente más lento en Windows, por ejemplo.

También hay algunas suposiciones en torno al sistema de archivos que no favorecen exactamente NTFS.

En lo que realmente debe pensar: si está en Windows, la mayoría de los productos antivirus se averiarán cuando se usen con PostgreSQL, porque no están acostumbrados a este tipo de carga de trabajo (como 1000 procesos diferentes que leen y escriben en el mismo archivo a través de diferentes asas). Eso significa que la recomendación fuerte es siempre desinstalar cualquier antivirus si es posible (simplemente deshabilitarlo o excluir los procesos / archivos PostgreSQL a menudo no es suficiente). Y esto no es solo por razones de rendimiento, sino también por estabilidad bajo carga.

Magnus Hagander
fuente
¡Gracias! Es bueno tener una respuesta autorizada, aunque en mi caso apegarme a Windows suena bien: tengo muy pocas conexiones y ningún antivirus (tampoco me gustan). El rendimiento ha sido muy bien también: Creo que el almacenamiento en caché de Windows y la velocidad de IO (cuando se tiene hasta conductores de la fecha) me ayuda allí ..
Sería bueno ver algunos puntos de referencia de rendimiento del mundo real ...
1
Por cierto, el uso de un grupo de conexiones será particularmente útil en Windows debido a los mayores costos de creación / destrucción de procesos.
Craig Ringer el
Realicé comparaciones paralelas de PostgreSQL en Windows versus Linux en los viejos días 8.1 y 8.2. Para nuestra carga, Linux fue aproximadamente un 50% más rápido. Sin embargo, no está claro cuánto de eso fue solo la conexión en red, porque los clientes estaban en una caja separada y usaban el mismo código Java para probar el rendimiento de la red sin procesar en una conexión abierta que corría un 30% más rápido cuando ambos lados eran Linux que cuando ambos lados estaban Windows Curiosamente, cuando un lado era Linux y uno era Windows, era un 15% más lento que ambos lados Linux.
kgrittn
2

Esto es difícil de responder: como señaló Ken, Postgres no hace ninguna diferencia entre el sistema operativo y es tan estable / inestable en Windows como lo es en Linux.

La única respuesta real a esta pregunta es: pruébalo.

Configure un servidor Linux y un servidor Windows con las mismas especificaciones, use la misma cantidad de datos en ambas máquinas y ejecute sus pruebas.

PD: Esto tiene votos cerrados porque se puede pedir mejor en serverfault

DrColossos
fuente
¿Es mejor en ServerFault? Lo habría categorizado como un problema de software para desarrolladores en lugar de un problema para un administrador de sistemas.
1
Esto no es un problema de software, ningún desarrollador tiene que preocuparse por su SQL: PostgreSQL usa el samen SQL en Linux como lo hace en Windows.
Frank Heikens
2

Tengo entendido que, para el mismo hardware, obtendrá un mejor rendimiento en Linux en comparación con Windows. Además, aunque Postgres se ejecuta en Windows, se ha estado ejecutando en * nix durante mucho, mucho más tiempo. YMMV, por supuesto, dependiendo de su situación.

Una muy buena referencia sobre el rendimiento de Postgres es "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). El título es un poco inapropiado ya que cubre más que la versión 9.0.

gsiems
fuente
-1

AFAIK Postgres no discrimina, no paralizan las funciones en Windows, ni nada de eso. Entonces, no hay nada sobre Postgres que requiera Linux.

Es mejor que preguntes en general sobre Linux. vs. Windows como una plataforma de servidor general.

OPINIÓN: Pero por mi dinero, un servidor siempre ejecuta Linux. Nunca soñaría con poner un software de servidor de misión crítica en Windows. Solo mis 2 centavos. Fin de la opinión.


fuente
stability and **performance** are crucial
Vladislav Rastrusny
Lea las otras respuestas para ver por qué esta suposición de una respuesta es incorrecta. Por favor considere eliminar la respuesta.
Sam