当前位置: 首页 > news >正文

Mysql——分库分表后id冲突解决方案(即分布式ID的生成方案)

目录

    • 一、分库分表后id冲突(分布式ID的冲突问题)
    • 二、分库分表后id冲突解决方案(即分布式ID的生成方案)
      • 2.1、第一种方案:设置自增主键的步长
        • 2.1.1、设置自增主键的步长
        • 2.1.2、设置自增主键的步长示例
        • 2.1.3、设置自增主键的步长的缺点
      • 2.2、第二种方案:通过数据库号段的方式
        • 2.2.1、通过数据库号段的方式
        • 2.2.2、通过数据库号段的方式缺点
        • 2.2.3、通过数据库号段的方式缺点的解决方式
      • 2.3、第三种方案:通过UUID的方式
        • 2.3.1、通过UUID的方式
        • 2.3.2、通过UUID的方式导致性能降低的解决方式
      • 2.4、第四种方案:通过Redis生成ID方式
        • 2.4.1、通过Redis生成ID方式
        • 2.4.2、通过Redis生成ID方式的注意事项
      • 2.5、第五种方案:通过雪花ID(snowflakelD)方式
        • 2.5.1、雪花ID(snowflakelD)
        • 2.5.2、雪花算法它为什么能够保证唯一性
        • 2.5.3、雪花算法缺点

一、分库分表后id冲突(分布式ID的冲突问题)

  • 分库分表后导致id冲突,如下图:
    在这里插入图片描述

二、分库分表后id冲突解决方案(即分布式ID的生成方案)

2.1、第一种方案:设置自增主键的步长

2.1.1、设置自增主键的步长
  • 设置自增主键的步长,在默认的情况下,自增主键它的步长是1,就会导致多张表主键都是一样的。
2.1.2、设置自增主键的步长示例
  • 示例1:2张表的情况

    第一张表,它的起始值是1,步长是2,那么它自身主键就会是1、3、5、7…

    在这里插入图片描述

    第二张表,它的起始值是2,步长是2,那么它自身主键就会是2、4、6、8…

    在这里插入图片描述

  • 示例2:3张表的情况

    第一张表,它的起始值是1,步长是3,那么它自身主键就会是4、7、10…

    第二张表,它的起始值是2,步长是3,那么它自身主键就会是5、8、11…

    第三张表,它的起始值是3,步长是3,那么它自身主键就会是6、9、12…

  • 示例3:4张表的情况

    第一张表,它的起始值是1,步长是4,那么它自身主键就会是5、9、13…

    第二张表,它的起始值是2,步长是4,那么它自身主键就会是6、10、14…

    第三张表,它的起始值是3,步长是4,那么它自身主键就会是7、11、15…

    第四张表,它的起始值是4,步长是4,那么它自身主键就会是8、12、16…

2.1.3、设置自增主键的步长
http://www.lryc.cn/news/625259.html

相关文章:

  • Python 作用域 (scope) 与闭包 (closure)
  • Android中使用RxJava实现网络请求与缓存策略
  • 在python中等号左边的都是对象,在matlab中等号a = 3+2 a就是个变量
  • 特征工程学习笔记
  • 无人机行业“黑话”
  • vue的双向数据绑定
  • JavaSE高级-02
  • 如何使用 React 101 的 Highcharts 包装器
  • MongoDB 查询方法与高级查询表(Python版)
  • Spring AI + MCP Client 配置与使用详解
  • SSH 登录失败(publickey)问题总结
  • Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型
  • 管理本地用户和组:红帽企业 Linux 系统安全的基础
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(4):31-40语法
  • Linux 中断机制深度分析
  • 如何生成和安全保存私钥?
  • 【DDIA】第十章:解析Reduce端连接与分组技术
  • gflags框架安装与使用
  • 【SkyWalking】单节点安装
  • 数字货币钱包的类型、特点及使用场景
  • 8.18网络编程——基于UDP的TFTP文件传输客户端
  • Kafka文件存储机制
  • LeetCode100 -- Day1
  • LeetCode 每日一题 2025/8/11-2025/8/17
  • STM32学习笔记14-I2C硬件控制
  • 嵌入式 C++ 语言编程规范文档个人学习版(参考《Google C++ 编码规范中文版》)
  • 朝花夕拾(七)--------从混淆矩阵到分类报告全面解析​
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • 安全基础DAY6-服务器安全检测和防御技术
  • 超级云平台:重构数字生态的“超级连接器“