pg_kpart 1.0
pg_kpart – Rechaza consultas que escanean todas las particiones sin utilizar la clave de particionamiento
pg_kpart es una extensión de PostgreSQL que rechaza aquellas consultas que provocarían el escaneo de todas las particiones de una tabla particionada cuando no se dispone de un predicado válido sobre la clave de partición. Evita escaneos involuntarios de la totalidad de la jerarquía de particiones originados por la omisión de condiciones WHERE o JOIN basadas en dicha clave.
Los administradores de bases de datos se enfrentan con frecuencia a consultas que acceden a tablas particionadas sin utilizar la clave de partición. En tablas que gestionan cientos de millones o miles de millones de registros, esta situación puede tener consecuencias críticas: PostgreSQL se ve obligado a inspeccionar cada una de las particiones, el subsistema de E/S del servidor alcanza niveles de saturación elevados y el rendimiento global de la instancia se desploma para todos los usuarios conectados.
La regla que aplica es simple: toda consulta ejecutada sobre una tabla particionada protegida que no sea capaz de eliminar ninguna partición, será rechazada. En lugar de generar una carga masiva de E/S en todo el servidor, el usuario recibe un mensaje de error claro y debe modificar la consulta para incluir un filtro sobre la clave de partición, exactamente como está pensado que se utilice el particionamiento.
pg_kpart convierte el «por favor, filtra siempre por la clave de partición» en una garantía efectiva impuesta por el propio sistema gestor de bases de datos, evitando que esta práctica dependa exclusivamente de la disciplina o la memoria de los desarrolladores. La extensión incorpora un modo de auditoría que facilita su despliegue gradual, mecanismos de listas blancas y negras que permiten delimitar con precisión las tablas sujetas a control y un SQLSTATE específico para que las aplicaciones puedan gestionar adecuadamente las infracciones detectadas. Gracias a ello, se integra de forma transparente en entornos de producción. Si se administran tablas particionadas de gran volumen y se desea evitar que una consulta mal diseñada comprometa el rendimiento del sistema por omitir la clave de partición, esta extensión representa una solución para ti.
Más información en esta entrada del blog: https://hexacluster.ai/blog/pg-kpart-postgresql-extension
Enlaces y créditos
pg_kpart es un proyecto abierto. Se agradece cualquier contribución para mejorar la herramienta. Pueden enviar sus ideas, solicitudes de características o parches utilizando las herramientas de GitHub.
Agradecemos a los desarrolladores que enviaron sus parches y a los usuarios que reportaron errores y solicitaron características; todos ellos son mencionados en el archivo ChangeLog.
Enlaces:
- Documentación: https://github.com/HexaCluster/pg_kpart/blob/main/README.md
- Descarga: https://github.com/hexacluster/pg_kpart/releases
- Desarrollo: https://github.com/hexacluster/pg_kpart
- Changelog: https://github.com/hexacluster/pg_kpart/blob/master/ChangeLog
Sobre pg_kpart
El propósito de pg_kpart es proporcionar una solución que permita a los administradores de bases de datos PostgreSQL garantizar la implementación adecuada de las funcionalidades de particionamiento ofrecidas por PostgreSQL.
Herramienta creada en HexaCluster Corp y mantenida por Gilles Darold.
pg_kpart se ejecuta en sistemas Linux y se distribuye bajo la licencia PostgreSQL.

