sql >> Database >  >> RDS >> PostgreSQL

High-performance transacties realiseren bij het uitbreiden van PostgreSQL met C-functies

Het klinkt alsof je waarschijnlijk de serverprogrammeerinterface (SPI) om een ​​opgeslagen procedure te implementeren als een C-taalfunctie draait in de PostgreSQL-backend.

Gebruik SPI_connect om de SPI in te stellen.

Nu SPI_prepare_cursor een vraag, dan SPI_cursor_open het. SPI_cursor_fetch rijen ervan en SPI_cursor_close het wanneer gedaan. Merk op dat SPI_cursor_fetch stelt u in staat batches van rijen op te halen.

SPI_finish om op te ruimen als je klaar bent.

U kunt de resultaatrijen in een tuplestore retourneren terwijl u ze genereert, zodat u niet de hele tabel in het geheugen hoeft op te bouwen. Bekijk voorbeelden in een van de set-retourfuncties in de PostgreSQL-broncode. Je zou ook kunnen kijken naar de SPI_returntuple helpfunctie.

Zie ook:C-taalfuncties en het uitbreiden van SQL .

Als maximale snelheid van belang is, kan uw klant het binaire protocol libpq gebruiken via libpqtypes zodat het de gegevens ontvangt die zijn geproduceerd door uw server-side SPI-gebruikende procedure met minimale overhead.




  1. SQLite BESTAAT

  2. Problemen oplossen:MySQL/MariaDB-fout #1044 Е Toegang geweigerd voor gebruiker

  3. Hoe te controleren of een opgeslagen procedure bestaat voordat u deze maakt?

  4. Heeft MySQL op tijd gebaseerde triggers?