54000 超出程序限制
1 个事务中不能有超过 4294967295 个命令。此处的命令是指数据库服务端实际执行的 SQL 语句,也包括了存储过程内部执行的 SQL 语句,只要这些 SQL 语句会修改数据库中的数据。
1个事务中不能有超过 4294967295 个语句。此处的语句是指客户端发送给数据库服务端的 SQL 语句。
1 个事务中不能有超过 4294967295 个子事务。
在存储过程中,你可以使用一个带有EXCEPTION
子句的BEGIN
块俘获错误并且从中恢复。你也可以在事务中定义保存点,在之后将事务中执行的工作回滚到声明的保存点位置。在 PostgreSQL 中,这些能力都是使用子事务来实现的。
事务中的撤消块序列号不能超过 65535。
在 Redrock Postgres 中,撤消记录位置(pg_uba
)是一个用来指向撤消记录位置的指针,它由一个块号、块序列号和一个项标识符的索引组成。pg_uba
按事务中发生的事件排序,以满足在事务 ACID 属性的需要。
通常情况下,数据库事务在回滚段中是从低往高的方向分配撤消块的,撤消块号会顺序递增。当撤消块的分配到达回滚段的末尾后,会尝试重新从回滚段的起始块进行分配,当撤销块号变小时,会递增块序列号以保证事务中撤消记录位置的有序性。
两阶段状态数据超过了 1GB。
在准备提交一个两阶段事务的时候,Postgres 需要将事务相关的重量级锁信息,和表的访问统计信息持久化到两阶段状态文件。在 Redrock Postgres 中,两阶段状态数据存放在事务关联的回滚段中。