开发者社区 问答 正文

Sequence 隐式用法

在为主键定义 AUTO_INCREMENT 后,Sequence 可以用于自动填充主键,由 DRDS 自动维护。

CREATE TABLE

扩展标准建表语法,增加了自增列的 Sequence 类型,如果未指定类型关键字,则默认类型为 GROUP。DRDS 自动创建的跟表相关联的 Sequence 名称,都是以 AUTO_SEQ_ 为前缀,后面加上表名。

CREATE TABLE <name> (
   <column> ... AUTO_INCREMENT [ BY GROUP | SIMPLE | TIME ],
   <column definition>,
   ...
) ... AUTO_INCREMENT=<start value>
SHOW CREATE TABLE

当表为拆分表或者广播表时,显示自增列 Sequence 的类型。

SHOW CREATE TABLE <name>
示例:

建表时指定 AUTO_INCREMENT,但是没有指定 Sequence 类型关键字,则默认使用 Group Sequence。

group sequence

建表时指定 AUTO_INCREMENT,同时指定使用 Time-based Sequence 作为主键值。

time-bases sequence

ALTER TABLE

暂不支持通过 ALTER TABLE 来修改对应 Sequence 的类型,但可修改起始值。如果想要修改表中带的隐式 Sequence 的类型,需要通过 SHOW SEQUENCES 指令查找出 Sequence 的具体名称和类型,然后再用 ALTER SEQUENCE 指令去修改。

ALTER TABLE <name> ... AUTO_INCREMENT=<start value>
注意:使用 DRDS Sequence 后,请谨慎修改 AUTO_INCREMENT 的起始值(仔细评估已经产生的 Sequence 值,以及生成新 Sequence 值的速度,防止产生冲突)。

展开
收起
猫饭先生 2017-10-30 13:49:57 1493 分享 版权
阿里云 AI 助理回答

在阿里云分布式关系型数据库服务(DRDS)中,对于需要自动填充主键值的场景,Sequence 是一个非常实用的功能。您已经概述了如何在 DRDS 中使用 Sequence 来实现 AUTO_INCREMENT 功能,这里我将补充一些细节和操作建议,帮助您更好地理解和应用这一特性。

创建表时指定 AUTO_INCREMENT

当您在创建表时希望某列自动递增,可以使用 AUTO_INCREMENT 关键字,并可选地指定 Sequence 的类型:GROUP, SIMPLE, 或 TIME。如果不指定,默认为 GROUP 类型。例如:

CREATE TABLE my_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100)
) AUTO_INCREMENT=1;

在这个例子中,如果未指定Sequence类型,DRDS会默认创建一个名为AUTO_SEQ_my_table的Group Sequence来管理自增ID。

使用不同类型的Sequence

  • GROUP Sequence:适用于大多数情况,通过分片间协调确保全局唯一且递增。
  • SIMPLE Sequence:简化版序列,适合单表或小规模场景,不保证跨分片唯一性。
  • TIME-based Sequence:基于时间戳生成序列号,适合需要时间有序的场景。

要指定Sequence类型,可以在AUTO_INCREMENT后加上类型关键字,如:

CREATE TABLE my_table (
    id INT PRIMARY KEY AUTO_INCREMENT BY TIME,
    ...
);

查看表结构与Sequence信息

使用SHOW CREATE TABLE命令可以查看表的创建语句及自增列的Sequence类型。

修改Sequence起始值

虽然不能直接修改Sequence的类型,但可以通过ALTER TABLE命令调整自增列的起始值:

ALTER TABLE my_table AUTO_INCREMENT=1000;

注意事项

  • 在调整AUTO_INCREMENT起始值前,请务必评估当前已分配的序列值范围,避免新旧值冲突。
  • 如果需要更复杂的Sequence管理,比如修改Sequence类型,需先通过SHOW SEQUENCES获取Sequence名称,再用ALTER SEQUENCE进行修改,但请注意这可能涉及数据迁移和潜在的数据一致性问题。
  • 由于DRDS的分布式特性,对Sequence的操作相比单机数据库更为复杂,推荐在充分理解其机制后再进行高级配置。

综上所述,DRDS的Sequence功能为分布式环境下的自增主键管理提供了便利,但在使用时应仔细规划以确保数据的一致性和完整性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答