Estoy ejecutando algunas pruebas comparativas en muchas consultas. Tengo un conjunto de consultas y se ejecutarán varias veces una tras otra. Sé que PostgreSQL almacena en caché los planes de consulta, por lo que es importante tenerlo en cuenta, pero que yo sepa, esto no siempre sucede.
Así que tengo dos enfoques. Estoy considerando (a) forzar la generación del plan de consulta cada vez que ejecuto una consulta o (b) 'calentar' un poco para que un plan se almacene en caché y se reutilice cada vez. ¿Cómo puedo realizar uno o qué precauciones puedo tomar para asegurarme de que uno u otro esté sucediendo?
Sería genial si pudiera monitorear los planes en el caché, pero no estoy seguro de si es posible.
ACTUALIZACIÓN: Mis consultas son SELECCIONES complejas para recuperar datos, no ELIMINAR/INSERTAR, etc. ¿Significa esto que no debo respetar tanto al planificador de consultas en los puntos de referencia?
PostgreSQL solo almacena en caché los planes de consulta si
Entonces, si desea comparar qué tan rápidas se vuelven sus consultas si evita la sobrecarga de la planificación, debe crear una declaración preparada y ejecutarla al menos seis veces (porque las primeras cinco ejecuciones siempre generarán un plan personalizado).
Si sus consultas son complejas, es probable que incluso pierda si almacena en caché los planes de consulta, especialmente si el tiempo de ejecución de las consultas es largo. En tal caso, generalmente es mejor dedicar más esfuerzo a planificar cada consulta. La mayor ventaja con declaraciones preparadas es cuando el tiempo de ejecución de las consultas es bajo.