2009-09-02 7 views
31

Voy a almacenar una gran cantidad de datos (registros) en tablas PostgreSQL fragmentadas (tabla por día). Me gustaría comprimir algunos de ellos para ahorrar espacio en mis discos, pero no quiero perder la capacidad de consultarlos de la manera habitual.¿PostgreSQL admite la compresión transparente de tablas (fragmentos)?

¿PosgreSQL admite una compresión tan transparente y dónde puedo leer sobre ella con más detalle? Creo que debería haber algún nombre mágico bien conocido para tal característica.

Respuesta

37

Sí, PostgreSQL hará esto automáticamente cuando superen un determinado tamaño. Sin embargo, la compresión se aplica a cada valor de datos individual, no a nivel de tabla completa. Lo que significa que si tienes mil millones de filas que son muy estrechas, no se comprimirán. O si tiene muchas columnas, cada una con solo un pequeño valor, no se comprimirán. Detalles sobre este esquema en el manual.

Si lo necesita en el nivel de la tabla completa, una solución es crear un TABLESPACE para aquellas tablas que desee comprimir, y apuntarlo a un sistema de archivos comprimido. Mientras el sistema de archivos aún obedezca fsync() y la semántica POSIX estándar, esto debería ser perfectamente seguro. Detalles sobre esto en el manual.

1

Además, no específicamente lo que solicitó, pero puede ser de ayuda con los grandes conjuntos de datos es que PostgreSQL admite la herencia de tablas, lo que le permite dividir sus datos, por ejemplo, por intervalos de fechas. O alguna otra lógica.

Cuestiones relacionadas