sql >> Base de Datos >  >> RDS >> PostgreSQL

Lograr transacciones de alto rendimiento al extender PostgreSQL con funciones C

Parece que probablemente quiera usar la interfaz de programación del servidor (SPI) para implementar un procedimiento almacenado como una función de lenguaje C ejecutándose dentro del back-end de PostgreSQL.

Use SPI_connect para configurar el SPI.

Ahora SPI_prepare_cursor una consulta, luego SPI_cursor_open eso. SPI_cursor_fetch filas de él y SPI_cursor_close cuando esté hecho. Tenga en cuenta que SPI_cursor_fetch le permite obtener lotes de filas.

SPI_finish para limpiar cuando haya terminado.

Puede devolver las filas de resultados a un tuplestore a medida que las genera, evitando la necesidad de construir toda la tabla en la memoria. Vea ejemplos en cualquiera de las funciones de devolución de conjuntos en el código fuente de PostgreSQL. También puede consultar el SPI_returntuple función auxiliar.

Consulte también:Funciones del lenguaje C y extendiendo SQL .

Si le interesa la velocidad máxima, es posible que su cliente quiera usar el protocolo binario libpq a través de libpqtypes por lo que recibe los datos producidos por su procedimiento de uso de SPI del lado del servidor con una sobrecarga mínima.