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

At opnå højtydende transaktioner ved udvidelse af PostgreSQL med C-funktioner

Det lyder, som om du sandsynligvis vil bruge serverprogrammeringsgrænsefladen (SPI) at implementere en lagret procedure som en C-sprogfunktion kører inde i PostgreSQL-back-end.

Brug SPI_connect for at konfigurere SPI.

Nu SPI_prepare_cursor en forespørgsel, derefter SPI_cursor_open det. SPI_cursor_fetch rækker fra den og SPI_cursor_close det når det er gjort. Bemærk at SPI_cursor_fetch giver dig mulighed for at hente batches af rækker.

SPI_finish at rydde op, når du er færdig.

Du kan returnere resultatrækkerne til en tuplestore, efterhånden som du genererer dem, og undgå behovet for at bygge hele tabellen i hukommelsen. Se eksempler i enhver af de sæt-returnerende funktioner i PostgreSQL-kildekoden. Du vil måske også se på SPI_returntuple hjælpefunktion.

Se også:C-sprogfunktioner og udvidelse af SQL .

Hvis maksimal hastighed er af interesse, vil din klient måske bruge den binære libpq-protokol via libpqtypes så det modtager dataene produceret af din server-side SPI-brugende procedure med minimal overhead.




  1. ADODB-kommando mislykkedes Udfør med parameteriseret SQL-forespørgsel

  2. MySQL-installation:FEJL:Kunne ikke bygge gem native-udvidelse

  3. Sådan opnår du PCI-overensstemmelse for MySQL &MariaDB med ClusterControl - The Replay

  4. Korrekt metode til at slette over 2100 rækker (efter ID) med Dapper