You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保分区表中由short_id生成的ID保持唯一性?

分区表中非自增ID重复问题的解决方法

问题场景

当对表执行如下List或Range分区操作后,表中由short_id生成的非自增id会丢失唯一性(不同分区可能出现重复的id值):

List分区示例

alter table tbl_example partition by list columns(platform) (
      PARTITION p1 VALUES IN ('platform1'),
      PARTITION p2 VALUES IN ('platform2'),
      PARTITION p3 VALUES IN ('platform3'),
      PARTITION p4 VALUES IN ('platform4')
);

Range分区示例

alter table tbl_example partition by range(TO_DAYS(createdAt)) (
      partition r0 values less than (TO_DAYS('2022-08-01')), 
      partition r1 values less than (maxvalue)
);

解决方法

这里提供两种可行的方案来避免id重复:

  • 方案一:新增带唯一约束的冗余列
    新增一个与原short_id取值完全一致的列(比如命名为unique_id),插入数据时同时将ID值写入id列和这个新增列,并给新增列添加唯一约束。这种方法能从数据库层面直接阻止重复ID插入,唯一的代价是略微增加表体积,但实际影响极小。

  • 方案二:插入前校验ID存在性
    在插入数据前先查询表中是否已存在相同的id值,确认不存在再执行插入。不过这种方法每次插入都要额外执行一次查询,在高并发、高插入量的业务场景下,可能会带来明显的性能延迟,不建议在核心业务中使用。

内容的提问来源于stack exchange,提问作者jeqwdkc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:05:31