PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Osiąganie wysokowydajnych transakcji podczas rozszerzania PostgreSQL o funkcje C

Wygląda na to, że prawdopodobnie chcesz użyć interfejsu programowania serwera (SPI) zaimplementować procedurę składowaną jako funkcję języka C działa wewnątrz zaplecza PostgreSQL.

Użyj SPI_connect aby skonfigurować SPI.

Teraz SPI_prepare_cursor zapytanie, a następnie SPI_cursor_open to. SPI_cursor_fetch wiersze z niego i SPI_cursor_close to po zakończeniu. Zauważ, że SPI_cursor_fetch pozwala na pobieranie partii wierszy.

SPI_finish posprzątać po zakończeniu.

Możesz zwracać wiersze wyników do magazynu krotek podczas ich generowania, unikając konieczności budowania całej tabeli w pamięci. Zobacz przykłady w dowolnej funkcji zwracającej zestaw w kodzie źródłowym PostgreSQL. Możesz również spojrzeć na SPI_returntuple funkcja pomocnicza.

Zobacz też:Funkcje języka C i rozszerzanie SQL .

Jeśli interesująca jest maksymalna prędkość, twój klient może chcieć użyć binarnego protokołu libpq przez libpqtypes więc otrzymuje dane generowane przez procedurę wykorzystującą SPI po stronie serwera przy minimalnym nakładzie pracy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podzielić wiersz na wiele wierszy za pomocą jednego zapytania?

  2. Funkcje Postgresa

  3. psycopg2.OperationalError:FATAL:nieobsługiwany protokół frontendu 1234.5679:serwer obsługuje 2.0 do 3.0

  4. Złożona kwestia „Gaps and Islands”

  5. Jak upsertować pandy DataFrame do tabeli PostgreSQL?