¿Cuál es la vida útil de una declaración preparada del lado del servidor PostgreSQL?
De acuerdo con laDocumentación de PostgreSQL, una declaración preparada está vinculada a una sesión / conexión de base de datos:
PREPARE crea una declaración preparada. Una declaración preparada es un objeto del lado del servidor que se puede utilizar para optimizar el rendimiento. Cuando se ejecuta la instrucción PREPARE, la instrucción especificada se analiza, analiza y reescribe. Cuando se emite un comando EXECUTE posteriormente, la declaración preparada se planifica y ejecuta.
Las declaraciones preparadas solo duran la duración de la sesión actual de la base de datos. Cuando finaliza la sesión, la declaración preparada se olvida, por lo que debe recrearse antes de volver a usarse.
Pero entonces,Markus Winand (autor de SQL Performance Explained) dice que:
PostgreSQL no tiene un caché de plan de consulta compartido, pero tiene un caché de plan de consulta opcional para declaraciones preparadas. Eso significa que el desarrollador tiene la opción de usar una declaración preparada con o sin plan de consulta en caché. Pero tenga en cuenta que el caché se cae cuando se cierra la declaración preparada.
¿Cual es verdadero?
¿La declaración preparada vive mientras la conexión de la base de datos esté abierta, por lo que cuando se usa un grupo de conexiones esto puede vivir mientras el grupo no cierre explícitamente la conexión física o la declaración preparada del lado del servidor se borre una vez que el JDBCDeclaración preparada está cerrado.