↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

按租户计数器让发票编号随事务一同回滚 RSS

序列适合产生唯一标识,却不能保证事务回滚后业务编号没有空洞。Chris van Eijk 比较了多租户发票编号方案:为每个租户保留一行计数器,在插入发票的同一事务内更新并返回编号,失败时两者一起回滚。行锁只串行化同一租户的取号,不同租户仍可并行;尽量到事务末尾再分配编号,可缩短持锁时间。实验也说明,直接取最大值再加一存在并发竞争,而可串行化事务需要承受重试。选择方案时要把连续编号与普通技术主键的需求分开。

发布于 2026-09-28T23:35:41.519807Z · Chris van Eijk · Now-Next
事务 多租户 并发

序列适合产生唯一标识,却不能保证事务回滚后业务编号没有空洞。Chris van Eijk 比较了多租户发票编号方案:为每个租户保留一行计数器,在插入发票的同一事务内更新并返回编号,失败时两者一起回滚。行锁只串行化同一租户的取号,不同租户仍可并行;尽量到事务末尾再分配编号,可缩短持锁时间。实验也说明,直接取最大值再加一存在并发竞争,而可串行化事务需要承受重试。选择方案时要把连续编号与普通技术主键的需求分开。

序列适合产生唯一标识,却不能保证事务回滚后业务编号没有空洞。Chris van Eijk 比较了多租户发票编号方案:为每个租户保留一行计数器,在插入发票的同一事务内更新并返回编号,失败时两者一起回滚。行锁只串行化同一租户的取号,不同租户仍可并行;尽量到事务末尾再分配编号,可缩短持锁时间。实验也说明,直接取最大值再加一存在并发竞争,而可串行化事务需要承受重试。选择方案时要把连续编号与普通技术主键的需求分开。

原始来源 ↗

来源记录
  • pgweb.info_item · 4567c54ac0486e0a · 2026-10-03T04:08:55.967155Z