Mejores prácticas de OLTP/OLAP
Las cargas de trabajo mixtas necesitan topología y disciplina de GUC, no esperanza. Utilice esta lista de verificación antes de apuntar Metabase al primario de producción en PostgreSQL 18.4.
Cómo usar esta lista
- Asigne cada conexión de BI a una réplica o almacén de datos.
- Establezca los valores predeterminados de los roles antes de otorgar el inicio de sesión de informes.
- Revise
pg_stat_activityen el primario semanalmente para buscar consultas de escaneo.
A - Topología
- Enrute BI y SQL ad hoc a réplicas de lectura por defecto. El primario solo para escrituras y lecturas de baja latencia.
- Muestre el retraso de replicación en las herramientas de BI cuando los KPI sean sensibles al tiempo. Confíe pero verifique la marca de tiempo de reproducción.
- Limite
pool_sizede informes de forma independiente de OLTP. Limite los eliminadores de caché concurrentes. - Programe ETL por lotes pesados fuera de las horas pico, incluso en réplicas. Proteja la puesta al día de la reproducción.
- Planifique la exportación del almacén de datos antes de que el primario se derrita. Replicación lógica o ETL cuando las réplicas se saturen.
B - GUC y división de roles
- Separe los roles:
oltp_app,reporting,admin. Diferentes tiempos de espera ywork_mem. - Mantenga
work_memde OLTP modesto (4-32 MB). Evite los valores predeterminados globales de 256 MB. - Establezca
work_memde informes solo conpool_sizeytemp_file_limit. Evite explosiones de RAM y disco. - Deshabilite o limite las recopilaciones paralelas en el rol OLTP. Habilite en la réplica para análisis.
- Use
statement_timeouten segundos para OLTP, minutos para informes. Forzado a través deALTER ROLE SET.
C - Salvaguardas de consultas y esquemas
- Requiera revisión de
EXPLAINpara SQL de informes nuevos. Antes del horario de producción. - Prefiera vistas materializadas para paneles repetidos. Actualice en la réplica cuando sea posible.
- Evite
SELECT *amplios en tablas con mucho TOAST en BI. Proyecte columnas. - Indexe para rutas OLTP en el primario; desnormalice en la réplica/MV para OLAP. Diferentes patrones de acceso.
- Bloquee informes entre inquilinos sin pruebas de RLS. Conéctese como rol de informes en staging.
D - Monitoreo
- Alerta sobre picos de CPU del primario correlacionados con nombres de usuario de informes. Detector de enrutamiento incorrecto.
- Rastree el SLO de retraso de la réplica durante las ventanas de BI. Escala la réplica antes de que se rompa el SLA de retraso.
- Monitoree
temp_bytesen sesiones de rol de informes. Señal de desbordamiento dework_mem. - Use
pg_stat_statementsporuserid. Cuantifique la cuota de costo de OLAP. - Revisión post-incidente: ¿hubo análisis en el primario? Causa raíz común.
Preguntas frecuentes
¿Está bien una instancia grande para MVP?
Sí, brevemente con tiempos de espera estrictos; planifique la réplica antes de la escala de ingresos.¿Metabase en el primario?
Solo con usuario de solo lectura, tiempo de espera agresivo y pool pequeño; se prefiere encarecidamente la réplica.¿Sincronizar réplica para BI?
Reduce el retraso; añade costo de latencia de confirmación del primario.¿CDC vs carga de BI?
Ambos compiten en el primario; monitoree las ranuras y el volumen de WAL.¿Partición para OLAP?
Elimina escaneos históricos; ayuda tanto al primario como a la réplica.¿Autoscaling en la nube?
Escala la réplica vCPU/RAM antes que el primario si BI crece.¿MV en el primario?
La actualización bloquea escrituras; prefiera réplicas o patrones de actualización concurrentes.¿Extensiones HTAP?
Evalúe por separado; PostgreSQL central aún necesita salvaguardas.¿Fin de mes financiero?
Pre-escala el pool de réplicas; congela SQL ad hoc en el primario.¿Grupo de rendimiento completo?
Revisite la sección `EXPLAIN` cuando los planes retrocedan después de la división de topología.Relacionado
- Conceptos básicos de carga de trabajo - Resumen de conflictos
- Réplicas de lectura para informes - Enrutamiento
- Consulta paralela - Ajuste de trabajadores
- Mejores prácticas de agrupación - Separación de pools
Versiones de pila: Esta página se escribió para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x y PostGIS 3.5+.