Pregunta

Actualmente tengo una función en PostgreSQL que crea una tabla temperatura, la llena, realiza algunos resultados de selección y devuelto difíciles. Las tablas de temperatura de PostgreSQL son locales a las funciones, por lo que esto me ayuda a evitar introducir otra columna en mi tabla temperatura para marcar todas las filas insertadas por una ejecución particular de la función. Si usara una tabla global que sería necesaria, y debido a la naturaleza de mis consultas, mataría el rendimiento.

Quiero transferir este código a VoltDB, pero no admite la creación de tablas TEMP a partir de procedimientos almacenados. Esto me hizo pensar en otros enfoques. Si un procedimiento almacenado iniciara una transacción y eliminaría todas las filas en una tabla (no temperatura), ¿qué pasaría con otras ejecuciones del mismo procedimiento almacenado que se ejecuta en ese momento?

O si después del eliminación, el procedimiento almacenado comienza a insertar filas, y otra sesión invoca el mismo SP, que querrá eliminar todas las filas nuevamente, ¿qué entonces?

En resumen, ¿puedo crear una vista local (a la ejecución de SP) de los datos dentro de una transacción eliminando todas las filas, insertando algunas filas y luego realizando consultas en las filas insertadas y luego eliminando todas las filas antes de que finalice la ejecución de SP (y la transacción se comprometa )?

Esto me permitiría evitar usar una columna Rowset_ID para las filas temporales, evitando unir más lentos (esta es una implementación de EAV).

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top