sql >> Databáze >  >> RDS >> PostgreSQL

Dosažení vysoce výkonných transakcí při rozšíření PostgreSQL o C-funkce

Zní to, jako byste pravděpodobně chtěli použít server programming interface (SPI) implementovat uloženou proceduru jako funkci jazyka C běžící uvnitř back-endu PostgreSQL.

Použijte SPI_connect pro nastavení SPI.

Nyní SPI_prepare_cursor dotaz a poté SPI_cursor_open to. SPI_cursor_fetch řádky z něj a SPI_cursor_close až bude hotovo. Všimněte si, že SPI_cursor_fetch umožňuje načíst dávky řádků.

SPI_finish po dokončení vyčistit.

Výsledné řádky můžete vrátit do úložiště tuplestore při jejich generování, čímž se vyhnete nutnosti sestavovat celou tabulku v paměti. Podívejte se na příklady v kterékoli z funkcí vracejících sadu ve zdrojovém kódu PostgreSQL. Můžete se také podívat na SPI_returntuple pomocná funkce.

Viz také:Funkce jazyka C a rozšíření SQL .

Pokud vás zajímá maximální rychlost, váš klient může chtít použít binární protokol libpq prostřednictvím libpqtypes takže přijímá data vytvořená vaší procedurou využívající SPI na straně serveru s minimální režií.




  1. Node.js/MySQL:Tisk skutečného dotazu v protokolu chyb v Node.js

  2. Psycopg2 vloží pythonský slovník do databáze postgres

  3. Vyberte hodnoty mezi datem zahájení a datem ukončení

  4. Hledáte radu ohledně dotazu na související videa v označeném videosystému