sql >> データベース >  >> RDS >> PostgreSQL

C関数でPostgreSQLを拡張するときに高性能トランザクションを実現する

    おそらくサーバープログラミングインターフェイス(SPI) ストアドプロシージャをC言語関数 として実装する PostgreSQLバックエンド内で実行されています。

    SPI_connectを使用します SPIをセットアップします。

    現在、 SPI_prepare_cursor クエリを実行してから、 SPI_cursor_open > それ。 SPI_cursor_fetch それからの行と SPI_cursor_close > 終わったらそれ。 SPI_cursor_fetchに注意してください 行のバッチをフェッチできます。

    SPI_finish 完了したらクリーンアップします。

    結果行を生成するときに結果行をタプルストアに返すことができるため、テーブル全体をメモリに構築する必要がありません。 PostgreSQLソースコードの集合を返す関数の例を参照してください。 SPI_returntuple<もご覧ください。 / code> ヘルパー関数。

    参照:C言語関数 およびSQLの拡張 。

    最大速度に関心がある場合、クライアントはlibpqtypes を介してlibpqバイナリプロトコルを使用することをお勧めします。 そのため、最小限のオーバーヘッドでサーバー側のSPI使用手順によって生成されたデータを受信します。




    1. 日付パラメータをネイティブクエリに渡す

    2. PHPOracleoci_num_rows結果0

    3. Postgresハッシュパーティショニングでどのパーティションが使用されるかを知る方法は?

    4. AES_DECRYPTがnullを返すのはなぜですか?