PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Raggiungere transazioni ad alte prestazioni estendendo PostgreSQL con le funzioni C

Sembra che tu voglia probabilmente usare l'interfaccia di programmazione del server (SPI) per implementare una procedura memorizzata come funzione del linguaggio C in esecuzione all'interno del back-end di PostgreSQL.

Usa SPI_connect per impostare la SPI.

Ora SPI_prepare_cursor una query, quindi SPI_cursor_open esso. SPI_cursor_fetch righe da esso e SPI_cursor_close quando fatto. Nota che SPI_cursor_fetch ti consente di recuperare batch di righe.

SPI_finish per ripulire una volta terminato.

Puoi restituire le righe dei risultati in un tuplestore mentre le generi, evitando la necessità di creare l'intera tabella in memoria. Vedi esempi in una qualsiasi delle funzioni di ritorno di set nel codice sorgente di PostgreSQL. Potresti anche voler dare un'occhiata a SPI_returntuple funzione di supporto.

Vedi anche:Funzioni del linguaggio C e estendere SQL .

Se la velocità massima è di interesse, il tuo cliente potrebbe voler utilizzare il protocollo binario libpq tramite libpqtypes quindi riceve i dati prodotti dalla procedura di utilizzo della SPI lato server con un sovraccarico minimo.