PostgreSQL 前后端協議中的查詢方式:Simple Query、Extended Query


1、簡單查詢(Simple Query)

簡單地把 SQL 語句發送給 backend,backend 也只是簡單地執行該 SQL 語句並把結果回復給 client。

client 發送 SQL 語句 insert into guestbook values(11,'off');

backend 回復結果

 

2、擴展查詢(Extended Query)
首先解釋一下 prepared-statement:需求是用戶有一條 A 語句,需要被反復執行;數據庫為這類語句設置了對應的捷徑,避免了反復執行類似語句造成的資源浪費。

擴展查詢可以理解為簡單查詢被拆分為幾個步驟:
– Parse 指定 SQL 語句,可能含有類似 ($1,$2,$3,$4) 這種參數
– Bind 指定捷徑的名字,填入變量的具體參數值
– Execute 執行該語句

其他的 Describe、Sync 等命令詳解可參考官網文檔。

參考示例
連到備端執行 insert into test values(trunc(random()*1000), 'abcdefg');

backend 回復執行失敗

3、默認方式說明
經過測試發現,psql 默認使用簡單查詢方式,JDBC、ODBC、Npgsql默認使用擴展查詢方式。
其中,JDBC 內提供了 preferQueryMode 參數,可通過此參數將 JDBC 修改為使用簡單查詢方式。

其他參考鏈接:

https://www.postgresql.org/docs/current/protocol-flow.html#PROTOCOL-COPY

PostgreSQL 源碼解讀

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM