20 votos

¿Cuál es el mejor sistema de archivos para insertar el rendimiento en PostgreSQL?

Tengo curiosidad por si alguien no se ha hecho ninguna experimentación o comparaciones entre los sistemas de archivos y base de datos de rendimiento. En Linux, me pregunto ¿cuál es el óptimo sistema de archivos de una base de datos postgres. También, ¿qué opciones de configuración (inode, etc) son ideales para él? Es esto algo que puede diferir notoriamente basan en los datos en la base de datos?

Si usted está buscando una cuestión relativa a general de sistema de archivos / rendimiento de base de datos, este post tiene buena información.

Sin embargo, me gustaría tener información sobre la inserción de rendimiento opone a que el rendimiento de la lectura como sea posible. Gracias por todas las respuestas!

16voto

David Locke Puntos 4419

Base de datos de los sistemas de gestión de la aplicación de sus propias journalling a través de los registros de base de datos, por lo que instalar un gestor de base de datos en un articulado sistema de archivos degrada el rendimiento a través de dos mecanismos:

  1. Redundante journalling aumenta la cantidad de actividad del disco

  2. Disco físico el diseño puede ser fragmentado (aunque algunos journalling sistemas de archivos tienen mecanismos para limpiar esto).

  3. Mucha de la actividad del disco se puede llenar el diario, causando falso 'disco completo de las condiciones de trabajo.

He visto una instancia de hace algunos años donde esto fue hecho en LFS sistema de archivos en un Baan instalación en un HP/UX cuadro. El sistema tenía un persistente de datos y rendimiento problemas de corrupción que fue diagnosticada hasta que alguien dedujo que los sistemas de archivos que se han formateado con EFT.

Los volúmenes de la celebración de archivos de base de datos, normalmente, tienen un pequeño número de archivos de gran tamaño. DBMS servidores normalmente tiene un valor que configura la cantidad de bloques que se leen en un solo I/O. los números más Pequeños sería apropiado para un alto volumen de procesamiento de transacciones sistemas de como iban a minimizar el almacenamiento en caché de datos redundantes. Un mayor número sería adecuado para los sistemas como de los almacenes de datos que hizo un montón de sequetial lee. Si es posible, ajustar el sistema de archivos tamaño de bloque de asignación de tener el mismo tamaño como el multi-bloque de leer que el DBMS.

Algunos sistemas de administración de base puede trabajar en raw particiones de disco. Esto da a los diferentes grados de aumento en el rendimiento, normalmente menos en un sistema moderno, con un montón de memoria. En los sistemas más antiguos y con menos espacio para el archivo de caché de metadatos del sistema de los ahorros en el disco I/O han sido bastante significativos. Raw particiones de hacer que el sistema sea difícil de gestionar, pero proporcionar el mejor rendimiento disponible.

Los volúmenes RAID-5 de incurrir en más de escribir encima de RAID-10 volúmenes, por lo que un ocupado de la base de datos con un montón de tráfico de escritura tendrá un mejor desempeño (a menudo mucho mejor) en un RAID-10. Los registros se deben poner físicamente separado de los volúmenes de disco para los datos. Si su base de datos es grande y en su mayoría sólo lectura (por ejemplo, un almacén de datos) puede haber un caso para ponerlo en volúmenes RAID-5 si este no excesivamente lento el proceso de carga.

Caché de escritura no simultánea en un controlador puede dar un rendimiento de ganar a expensas de la creación de una cierta (bastante improbable pero posible) el incumplimiento de los modos en los que los datos podrían dañarse. El mayor rendimiento de ganar para esto es muy random access carga. Si usted desea hacer esto, considere la posibilidad de colocar los registros en un controlador separado y deshabilitar la caché de escritura no simultánea en el registro de volúmenes. Los registros tendrán una mejor integridad de los datos y un solo fallo no puede llevar a cabo tanto el registro de datos y volúmenes. Esto le permite restaurar desde una copia de seguridad y una puesta al día de los registros.

14voto

oefe Puntos 9122

Comprar una copia de "postgresql alto rendimiento" por Greg Smith. Es un gran Libro y dos o más capítulos sobre el Hardware de Disco y sistemas de archivos. Usted va a aprender mucho.

En resumen: no hay una respuesta breve.

Pero voy a tratar de summerize:

  • no usar ext2 hasta que usted sepa lo que usted está haciendo.
  • con ext3 cuidado de punto de control de los picos debido a fsync llamadas, consulte la página 113 y 82 y 79
  • el uso de ext4 o xfs
  • hay otras opciones

Pero como usted está realmente preguntando qué FS utilizar, usted debe leer el libro!

4voto

sundar Puntos 2271

Primero de todo, usted quiere un fiable sistema de ficheros en primer lugar, y una rápida un segundo. Lo que descarta algunas opciones...

Las pruebas de rendimiento muestra que a menudo XFS le da el mejor rendimiento. Hay algunos problemas de estabilidad con la que una vez que llegue a disco-muy-cerca-de-la plena de los escenarios, pero como usted controlar para que no ocurra, voy a dar un rendimiento ligeramente mejor.

En teoría, usted no necesita un diario de sistema de ficheros para el pg_xlog directorio, pero la diferencia en la velocidad general es tan pequeño que no vale la pena. Para el directorio de datos, usted realmente debe tener siempre un diario de metadatos del sistema de ficheros.

3voto

John Hunter Puntos 2204

Me hizo un informe detallado, pero es sólo en francés. Si usted lee el francés o son felices con las herramientas de traducción automática... puede volver a utilizar la metodología y ejecutar por sí mismo.

Resumen ejecutivo: he utilizado pgbench. El Linux planificador de e/S tiene muy poca importancia para las actuaciones y el sistema de ficheros de sólo un poco. Por lo tanto, si usted está en una prisa, sólo tienes que elegir el valor predeterminado. Yo he elegido JFS.

2voto

David Pashley Puntos 17011

Sistema de archivos es solo parte del problema. Usted puede obtener significativo aumento en el rendimiento que cambiar el IO scheduler. Afortunadamente, es bastante fácil para probar como se puede cambiar el IO scheduler sobre la marcha. Me gustaría sugerirle que cada uno de ellos por un par de días bajo carga típica y ver que da el mejor rendimiento.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: