sql >> Base de Datos >  >> RDS >> PostgreSQL

Planes de tienda de columnas

En pgsql-general, Bráulio Bhavamitra pregunta:

Esta es una pregunta bastante interesante. Reemplazar por completo el almacenamiento basado en filas actual no sería una buena idea:nos ha servido extremadamente bien y estoy bastante seguro de que reemplazarlo por completo con un almacenamiento en columnas sería desastroso en términos de rendimiento para los casos de uso de OLTP.

Algunas columnas. Imagen cortesía de Yiming Sun en Flickr

Eso no significa que las tiendas en columnas sean una mala idea en general, porque no lo son. Simplemente tienen un caso de uso más limitado que "toda la base de datos". Para consultas analíticas sobre datos agregados en su mayoría, un almacenamiento en columnas es una representación mucho más apropiada que el almacenamiento basado en filas regular, pero no todas las bases de datos son analíticas.

Sin embargo, para lograr ganancias de rendimiento interesantes, debe hacer mucho más que simplemente cambiar el almacenamiento subyacente:debe asegurarse de que el resto del sistema pueda aprovechar la representación modificada, para que pueda ejecutar consultas de manera óptima; por ejemplo, es posible que desee agregados que operen en un modo SIMD en lugar de un valor a la vez como ocurre hoy. Esto, en sí mismo, es una gran empresa, y también hay otros desafíos.

Resulta que hay un equipo en 2ndQuadrant trabajando precisamente en estos asuntos. Publicamos un parche el año pasado, pero no fue muy interesante:solo logró una mejora porcentual de un dígito en los puntajes de TPC-H; no lo suficiente como para molestar a la comunidad de desarrollo (era un parche bastante invasivo). Queremos más que eso.

En nuestro diseño, columnar o no será una opción:podrá decir Estimado servidor, para esta tabla, tenga la amabilidad de configurar el almacenamiento en columnas para mí, ¿lo haría? Muchas gracias . Y luego obtendrá una tabla que puede ser más lenta para el uso regular pero que será excelente para el análisis. Para la mayoría de sus tablas, el almacenamiento actual basado en filas probablemente seguirá siendo la mejor opción, porque el almacenamiento basado en filas se adapta mucho mejor a los casos más generales.

Todavía no tenemos una escala de tiempo. Estén atentos.