View a markdown version of this page

Administración de sesiones con la API de datos de Amazon RDS - Amazon Aurora

Administración de sesiones con la API de datos de Amazon RDS

La API de datos de RDS mantiene un conjunto de conexiones de bases de datos y las reutiliza en todas las llamadas para reducir la sobrecarga de conexión. Antes de volver a utilizar una conexión, la API de datos de RDS restablece el estado de la sesión. El restablecimiento varía según el motor de base de datos: en PostgreSQL, la API de datos de RDS ejecuta la instrucción DISCARD ALL para borrar el estado de la sesión, como las tablas temporales, las instrucciones preparadas y los parámetros por sesión; en MySQL, la API de datos de RDS restablece la conexión (equivalente a COM_RESET_CONNECTION).

Estos restablecimientos cubren los atributos por sesión que son propiedad del motor, pero no se garantiza que se incluya el estado creado por una extensión. Es posible que las extensiones no se comporten de la misma manera que otros atributos por sesión cuando se ejecutan estas limpiezas, y su estado puede persistir en la conexión a la base de datos tras el restablecimiento. Como la API de datos de RDS reutiliza las conexiones, el estado que deja una extensión no se limita a la llamada que la creó y puede seguir presente cuando una llamada posterior reutilice la misma conexión.

dblink es un ejemplo de este comportamiento: DISCARD ALL no cierra las conexiones abiertas por la extensión dblink, por lo que una conexión dblink determinada abierta en una llamada puede permanecer abierta cuando se reutiliza la conexión. Otras extensiones que mantienen recursos fuera del estado de sesión del motor pueden comportarse de forma similar.

Si usa extensiones con la API de datos de RDS, no confíe en el restablecimiento de la sesión para liberar el estado propiedad de la extensión. Cree y libere ese estado en la misma transacción mediante la función de desmontaje propia de la extensión. Para dblink, cierre cada conexión con dblink_disconnect.