瑞士苏黎世 - 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 也有“语句级回滚”模式。这些实现的问题在于它们通过发送 SAVEPOINT autosave
和 RELEASE SAVEPOINT autosave
与服务器添加了额外的通信,因此它会严重限制应用程序的吞吐量。
有关该功能的完整描述以及如何使用该扩展,请参见文档。
pg_statement_rollback
是 LzLabs 的一个开放项目(https://www.lzlabs.com/)。欢迎任何为构建更好的工具做出的贡献。您只需使用 GitHub 工具发送您的想法、功能请求或补丁。
链接