开发指南—Sequence—使用限制

简介: 本文将介绍使用Sequence过程中的注意事项及问题处理的方法。

限制与注意事项

在使用Sequence时,您需要注意如下事项:

  • 转换Sequence类型时,必须指定START WITH起始值。
  • 单元化Group Sequence不支持作为源或目标的类型转换,也不支持起始值以外的参数修改。
  • 属于同一个全局唯一数字序列分配空间的每个单元化Group Sequence ,必须指定相同的单元数量和不同的单元索引。
  • 在PolarDB-X非拆分模式库(即后端仅关联一个已有的RDS物理库)、或拆分模式库中仅有单表(即所有表都是单库单表,且无广播表)的场景下执行INSERT时, PolarDB-X会自动优化并直接下推语句,绕过优化器中分配Sequence值的部分。此时INSERT INTO ... VALUES (seq.nextval, ...)这种用法不支持,建议使用后端RDS/MySQL自增列机制代替。
  • 如果将指定分库的Hint用在INSERT语句上,比如INSERT INTO ... VALUES ... 或INSERT INTO ... SELECT ...,且目标表使用了Sequence,则PolarDB-X会绕过优化器直接下推语句,使Sequence不生效,目标表最终会使用后端RDS/MySQL表中的自增机制生成id。
  • 必须对同一个表采用一种统一的方式分配自增id:或者依赖于Sequence,或者依赖于后端RDS/MySQL表的自增列;应避免两种机制混用,否则很可能会造成id冲突(INSERT时产生重复id)的情况,且难于排查。
  • 将Time-based Sequence用于表中自增列时,该列必须使用BIGINT类型。

如何处理主键冲突

如果直接在RDS中写入了数据,而对应的主键值不是PolarDB-X生成的Sequence值,那么后续让PolarDB-X自动生成主键写入数据库,可能会和这些数据发生主键冲突,您可以通过如下步骤解决此问题:

  1. 通过SHOW SEQUENCES来查看当前已有Sequence。AUTO_SEQ_ 开头的Sequence是隐式Sequence(创建表时加上AUTO_INCREMENT参数的字段产生的Sequence)。请在命令行输入如下代码:
mysql> SHOW SEQUENCES;
  1. 返回结果如下:
+---------------------+-------+--------------+------------+-----------+-------+-------+

| NAME | VALUE | INCREMENT_BY | START_WITH | MAX_VALUE | CYCLE | TYPE |
+---------------------+-------+--------------+------------+-----------+-------+-------+
| AUTO_SEQ_xkv_t_item | 0 | N/A | N/A | N/A | N/A | GROUP |
| AUTO_SEQ_xkv_shard | 0 | N/A | N/A | N/A | N/A | GROUP |
+---------------------+-------+--------------+------------+-----------+-------+-------+
2 rows in set (0.04 sec)
  1. 若xkv_t_item表有冲突,并且xkv_t_item表主键是ID,那么从PolarDB-X获取这个表最大主键值。请在命令行输入如下代码:
mysql> SELECT MAX(id) FROM xkv_t_item;
  1. 返回结果如下:
+-----------+ 
| MAX(id) |
+-----------+
| 8231 |
+-----------+
1 row in set (0.01 sec)
  1. 更新Sequence表中对应的值,这里更新成比8231要大的值,比如9000,更新完成后,后续插入语句生成的自增主键将不再报错。请在命令行输入如下代码:
mysql> ALTER SEQUENCE AUTO_SEQ_xkv_t_item START WITH 9000;
相关文章
|
数据采集 存储 前端开发
使用 rvest 包快速抓取网页数据:从入门到精通
本文介绍了如何使用 R 语言中的 `rvest` 包结合代理 IP 技术,快速抓取新闻网站的数据。以澎湃新闻为例,详细展示了如何配置代理、解析网页结构、提取新闻标题和摘要,并将数据保存为 CSV 文件。通过本教程,读者可以掌握 `rvest` 包的使用方法,提高爬虫抓取效率。
437 6
使用 rvest 包快速抓取网页数据:从入门到精通
|
机器学习/深度学习 算法 固态存储
深度学习在图像识别中的应用与发展
本文将探讨深度学习在图像识别领域的应用与发展。通过分析深度学习的基本概念、常用模型以及具体案例,揭示其在图像识别中的重要性和未来趋势。我们将详细介绍卷积神经网络(CNN)的原理与结构,并展示如何利用深度学习进行图像分类、目标检测和图像分割等任务。同时,我们还将讨论当前面临的挑战及可能的解决途径。希望通过这篇文章,读者能够对深度学习在图像识别中的应用有一个全面而深入的了解。
|
存储 运维 安全
什么是 802.1x?
【8月更文挑战第24天】
647 0
|
开发框架 数据安全/隐私保护 Android开发
iOS二维码的生成和扫码详细介绍(手把手教)
iOS二维码的生成和扫码详细介绍(手把手教)
1023 0
|
编解码 UED iOS开发
苹果mac系统音频播放软件哪个好一点
在苹果mac系统上,有许多不同的音频播放软件可供选择,这些软件各有优点和适用场景。下面将为您详细介绍每一个软件,帮助您找到最适合您的音频播放器。
791 1
苹果mac系统音频播放软件哪个好一点
|
小程序
阿里云软著价格表
阿里云软著价格表2023,阿里云计算机软件著作权登记分为普通登记、加急登记、顾问登记和安心登记,普通登记费用359元全程线上申请阿里云完成初审;加急登记1080元,版权中心审查周期20-30工作日,有专属助手提供一对一解答;顾问登记价格1440元,专业顾问负责整理填报资料;安心登记1980元,补正不通过可退全款。阿里云百科分享阿里云计算机软件著作权登记费用价格、不同版本区别以及选择方法:
1299 1
阿里云软著价格表
|
前端开发 容器
MvvmLight入门教程
MvvmLight是一款应用广泛的MVVM框架
525 0
|
弹性计算 网络安全 数据安全/隐私保护
在阿里公有云导入并配置和使用银河麒麟V10SP1系统
在阿里公有云导入并配置和使用银河麒麟V10SP1系统
在阿里公有云导入并配置和使用银河麒麟V10SP1系统
|
Windows
Typora v1.2.4 (Windows)破解!亲测有效!
Typora v1.2.4 (Windows)破解!亲测有效!
911 0
Typora v1.2.4 (Windows)破解!亲测有效!
|
域名解析 机器学习/深度学习 缓存
秒懂边缘云 | CDN基础入门:CDN原理及架构
本文将为您介绍「CDN 是什么」以及「CDN 在用户体验的提升中发挥了什么样的作用」。
7628 1