全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
分布式关系型数据库 DRDS

DRDS Sequence 介绍

更新时间:2018-03-12 18:55:26

DRDS 全局唯一数字序列(64 位数字,对应 MySQL 中 Signed BIGINT 类型,以下简称为 Sequence)的主要目标是为了生成全局唯一和有序递增的数字序列,常用于主键列、唯一索引列等值的生成。

DRDS 中的 Sequence 主要有两类用法:

  • 显式 Sequence,通过 Sequence DDL 语法创建和维护,可以独立使用;通过select seq.nextval;获取序列值,seq 是具体 Sequence 的名字;
  • 隐式 Sequence,在为主键定义 AUTO_INCREMENT 后,用于自动填充主键,由 DRDS 自动维护。

    注意:仅拆分表和广播表指定了 AUTO_INCREMENT 后,DRDS 才会创建隐式的 Sequence。非拆分表并不会,非拆分表的 AUTO_INCREMENT 的值由底层 RDS(MySQL)自己生成。

下文主要包含以下内容:

DRDS Sequence 类型与特性说明

目前共支持 2 种 Sequence 类型:

类型(缩写) 全局唯一 连续 单调递增 同一连接内单调递增 非单点 数据类型 可读性
Group Sequence(GROUP) 所有整型
Simple Sequence(SIMPLE) 所有整型

概念解释:

  • 连续:如果本次取值为 n,下一次取值一定是 n + 1,则是连续的;如果下一次取值不能保证为 n + 1,则是非连续的;
  • 单调递增:如果本次取值为 n,下一次取值一定是一个比 n 大的数,则是单调递增的;
  • 单点:存在单点故障风险;

Group Sequence(GROUP,默认使用)

特性

全局唯一的 Sequence,产生的值是自然数序列,但是不保证连续和单调递增。如果未指定 Sequence 类型,DRDS 默认使用 Group Sequence。

  • 优点:全局唯一、不会产生单点问题、性能非常好。
  • 缺点:产生的序列不连续、可能会有跳跃段;不会严格从起始值开始取值;不能循环。

实现机理

采用多个节点产生值来保证高可用,每次取出一段值,如果该段值没有取完(比如连接断掉等情形),就会产生跳跃段。

Simple Sequence(SIMPLE)

特性

仅 Simple Sequence 支持自定义步长、最大值和循环/非循环利用。

  • 优点:全局唯一、连续、单调递增。
  • 缺点:单点,性能较差,存在瓶颈,需要谨慎使用。

实现机理

每产生一个值都要进行一次持久化操作。

使用场景

这两种 Sequence 都保证全局唯一,均可以应用在主键列唯一索引列

  • 大部分场景下建议选用 Group Sequence
  • 如果业务强依赖连续的 Sequence 值,此时只能使用 Simple Sequence(注意 Simple Sequence 的性能问题);

以创建一个起始值是 100000,步长为 1 的 Sequence 为例。

  • 如果采用 Simple Sequence,则会严格产生100000、100001、100002、100003、100004、.....、200000、200001、200002、200003、......这样的序列(全局唯一、连续、单调递增)。Simple Sequence 会保证持久化,即使发生单点问题,服务重启后依然会在断点继续产生 Sequence 值,中间不会产生跳跃段。Simple Sequence 的机理是每产生一个值都要进行一次持久化操作,因此性能并不是很好。

  • 如果采用 Group Sequence,产生的序列有可能是200001、200002、200003、200004、100001、100002、100003、......这样的序列。

    注意:

    • Group Sequence 起始值并不会严格从设定的参数(本例中是100000)开始,但是保证比该参数大。本例中是从 200001 开始取值的。
    • Group Sequence 保证全局唯一,但是会有跳跃段。比如 Group Sequence 的某个节点挂掉,或者某个连接只取了一部分值,然后该连接被关闭了,都会产生跳跃段。该例中 200004 和 100001 之间产生了跳跃段。
本文导读目录