瑞士蘇黎世 - 2020 年 11 月 2 日
pg_statement_rollback
的初始版本 v1.0 今天發布。
pg_statement_rollback
是一個 PostgreSQL 擴充套件,用於新增具有語句層級回滾的伺服器端交易,就像在 Oracle 或 DB2 中一樣。
如果在執行期間,任何 SQL 語句導致錯誤,則該語句的所有效果都會回滾。 回滾的效果就像從未運行過該語句一樣。 此操作稱為語句層級回滾,具有以下特徵
在 PostgreSQL 中,當您遇到錯誤時,交易無法繼續,並且交易中完成的所有工作都會回滾。 Oracle 或 DB2 在每個語句執行之前都有隱式儲存點,允許回滾到語句失敗之前的狀態。
目前 PostgreSQL 的語句層級回滾實現在客戶端完成。 psql 具有 \set ON_ERROR_ROLLBACK on
,JDBC 在執行查詢時出現 SQL 異常時具有 autorollback
,psqlODBC 也具有 "statement level rollback" 模式。 這些實現的問題是它們透過發送 SAVEPOINT autosave
和 RELEASE SAVEPOINT autosave
來增加與伺服器的額外通信,因此可能會嚴重限制應用程式的吞吐量。
有關該功能的完整描述以及如何使用該擴充套件,請參閱文件。
pg_statement_rollback
是 LzLabs 的一個開放專案 (https://www.lzlabs.com/)。 歡迎任何為構建更好工具的貢獻。 您只需使用 GitHub 工具發送您的想法、功能請求或修補程式。
連結