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

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.xdnf.cn/news/18115.html

相关文章:

  • 【tips】unsafe-eval线上页面突然空白
  • python实现pdfs合并
  • Ansible 部署LNMP
  • Read View 在 MVCC 里如何工作的?
  • 下载大模型经常遇到的报错Still waiting to acquire lock on Wan2.1-VACE-14B/.cache与解决办法
  • Linux系统WireShark抓取本地网卡报文
  • 发布npmjs组件库
  • 套接字超时控制与服务器调度策略
  • 多台服务器批量发布arcgisserver服务并缓存切片
  • 开发指南133-设定列表分页的初始默认每页行数
  • vue从入门到精通:搭建第一个vue项目
  • 【React Hooks】封装的艺术:如何编写高质量的 React 自-定义 Hooks
  • Rust学习笔记(六)|Rust 中的常用集合(Vector、String、HashMap)
  • Rust 异步中的 Waker
  • Linux权限的学习
  • 概率论基础教程第4章 随机变量(三)
  • 【opencv-Python学习笔记(7):图像平滑处理】
  • IntelliJ IDEA 开发配置教程
  • 独立看门狗(IWDG)
  • 决策树简单实战
  • 「数据获取」《防城港市统计年鉴》(2014-2020)(获取方式看绑定的资源)
  • 图像分类精度评价的方法——误差矩阵、总体精度、用户精度、生产者精度、Kappa 系数
  • 详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
  • 一套GoldenGate → Kafka → Flink → MySQL 的端到端增量同步方案
  • IDE开发系列(1)基于QT的简易IDE框架设计
  • 3D检测笔记:基础坐标系与标注框介绍
  • 深层语义知识图谱:提升NLP文本预处理效果的关键技术
  • 【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
  • 在 PyCharm Notebook 中安装 YOLO
  • Jupyter 中实现交互式图表:ipywidgets 从入门到部署