美文网首页
2018-05-15

2018-05-15

作者: 张云南 | 来源:发表于2018-05-15 10:59 被阅读0次

InnoDB为什么要使用auto_Increment

在Mysql表设计中,通常会使用一个与业务无关的自增列做为主键。

这是因为Mysql默认使用B-Tree索引,你可以简单理解为“排好序的快速查找结构”。

如下是一个B-Tree的结构图,2层B+树,每个页面的扇出为4;并有1到6五条记录;上层记录保存每个页面的最小值;每个页面通过双向链表链接起来的;

当你插入记录7时,就会发生页面分裂:

如上可见分裂产生了记录移动,但是优化后的分裂操作无需记录移动:

在InnoDB的实现中,为每个索引页面维护了一个上次插入的位置,以及上次的插入是递增/递减的标识。根据这些信息,InnoDB能够判断出新插入到页面中的记录,是否仍旧满足递增/递减的约束,若满足约束,则采用优化后的分裂策略;

所以建议使用一列顺序递增的 ID 来作为主键,但不必是数据库的autoincrement字段,只要满足顺序增加即可 。很多大型应用会有顺序递增的ID生成器。

相关文章

  • 12306

    train.py 最后更新时间:2018-05-15 0:15:23

  • 随想——源于公园、校园、家园

    葱兰朵朵 2018-05-15 17:21 · 字数 1538 · 阅读 1 · 日记本 邀...

  • http理解(中)

    title: http 理解(中)date: 2018-05-15 14:53:22tags: http 确保We...

  • 2018-05-16

    日式 就这么装! 梵客家装青岛公司2018-05-15 日本和式建筑 又称“和样建筑”或...

  • Python递归优化

    博客文章迁移: 2018-05-15 11:17 在codewars上做题时遇到的坑(https://www.co...

  • 日精进打卡(第312天)

    2018-05-15 姓名:李义 公司:........ 组别:259期利他二组 【知~学习】 背诵 六项精进大纲...

  • 2018-05-15

    网海情缘 郝代弟 2018-05-15 17:23 · 字数 1408 · 阅读 0 · 日记本 冥冥之中有...

  • 享受豪华(转录)

    享受豪华(转录) 2018-05-15 10:43:19|分类: 博友芳香 享受豪华 王正方 (作者简介:王正方,...

  • 2018年的电影记录.中

    81. 2018-05-15「杀手乔」Killer Joe,豆瓣评分6.6:被推荐了这个,看完只觉得全片都好病态。...

  • 王霞感恩功课第162

    王霞感恩功课第162天 王霞王夏 2018-05-15 23:26 · 字数 6217 · 阅读 29 · 日记本...

网友评论

      本文标题:2018-05-15

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