美文网首页
保证MySQL主键的自增长及其意义—微服务之间同步一条记录的id

保证MySQL主键的自增长及其意义—微服务之间同步一条记录的id

作者: 猫尾草 | 来源:发表于2019-12-26 14:32 被阅读0次

1. 几个基本知识

    1. MySQL每个表必须有一个主键,主键具有唯一性,采用MySQL主键自生成策略还是采用其他方式在这一点上问题不大;
    1. 主键是包含索引的,然后mysql的索引是通过b+树来实现的,每一次新的数据的插入,为了查询的优化,InnoDB引擎都会对主键重排序,即对索引底层的b+树进行修改;如果主键不是像MySQL自增主键那样本身就是从小到大有序增长,那么b+树频繁大调整,InnoDB会产生巨大的IO压力。

2. 应用场景

问题
  当两个模块A、B,A中的表a的记录和B中的表b的记录有关联关系时,有两种选择,一是表a直接使用表b的记录的id,假如B是单应用,没什么问题;假如B是一个集群,有两个问题,需要采取某种方式保证表a的id的唯一性,需要保证表a的id的自增性。第一个问题,唯一性,大家都明白;第二个问题,自增性,就是1中提到的InnoDB索引问题。
  如果表a和b都是数据量很小的表,不经常修改数据,问题不大。如果表a频繁的新增删除数据,同时数据量很大或者采用逻辑删除,那么这时无序的id就会造成1中说的索引问题。
解决办法
  遇到过两次这个需求,都是表a用自己的自增id,添加一个字段,记录表b的id。

相关文章

  • sql练习题

    1. mysql查询 两张表:user用户表:id (主键,自增),namebuy 购买记录表: id (主键,自...

  • GreenDao使用

    - @Id :主键 long/Long型,可以通过@Id(autoincrement = true)设置自增长- ...

  • MySQL之主键

    引用 数据表的主键选择 设计套路:Mysql主键的选择 数据库的唯一标示符(ID)的选择 MySQL 使用自增ID...

  • MySQL表自增id用完了该怎么办?

    我们知道MySQL表可以定义一个自增长的id,如果我们的表没有指定主键字段,那MySQL会给我们的表创建一个不可见...

  • 使用pt-online-schema-change 修改主键需注

    场景:某个表上已是联合主键,后来需要修改成 自增长的id 主键。 思路:1.先删除原表的联合主键2.再添加id 列...

  • mysql迁移到orcale 图文教程[附带官方教程]

    场景:mysql 数据库转移到oracle中去,存在数据库类型的差别,还有主键id自增长的不同,如果要手动完成这个...

  • Mysql INSERT ... ON DUPLICATE K

    一个推荐菜品表中目前已有的四个字段:id(主键,自增长)shop_idmenu_id(判断记录是否存在的字段)la...

  • 待解决

    1、一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,...

  • BAT五十五道 MySQL面试题总结!

    1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启...

  • 转~MySQL 面试题小结

    1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启...

网友评论

      本文标题:保证MySQL主键的自增长及其意义—微服务之间同步一条记录的id

      本文链接:https://www.haomeiwen.com/subject/ccrdoctx.html