PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Постигане на транзакции с висока производителност при разширяване на PostgreSQL с C-функции

Изглежда, че вероятно искате да използвате интерфейс за програмиране на сървъра (SPI) за внедряване на съхранена процедура като функция на C език работещ в задната част на PostgreSQL.

Използвайте SPI_connect за настройка на SPI.

Сега SPI_prepare_cursor заявка, след което SPI_cursor_open то. SPI_cursor_fetch редове от него и SPI_cursor_close когато е готово. Обърнете внимание, че SPI_cursor_fetch ви позволява да извличате партиди от редове.

SPI_finish за почистване, когато сте готови.

Можете да върнете редовете с резултати в tuplestore, докато ги генерирате, избягвайки необходимостта да изграждате цялата таблица в паметта. Вижте примери във всяка от функциите за връщане на множество в изходния код на PostgreSQL. Може също да искате да погледнете SPI_returntuple помощна функция.

Вижте също:Функции на езика C и разширяване на SQL .

Ако максималната скорост е от интерес, вашият клиент може да иска да използва бинарния протокол libpq чрез libpqtypes така че получава данните, произведени от вашата SPI-използваща процедура от страна на сървъра, с минимални разходи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да попълните редове въз основа на данни за тип събитие

  2. Последователност от първичен ключ на PostgreSQL, загубена след мигриране с помощта на AWS DMS

  3. Postgresql регулярен израз за съвпадение с главни букви, съобразен с Unicode

  4. Производителност на TPC-H след PostgreSQL 8.3

  5. Разлика между времеви отпечатъци с/без часова зона в PostgreSQL