发布于 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