mysql主键为什么要自增_MySQL表为什么要有自增主键

一、使用自增主键的好处

1. 自增型主键有利于插入性能的提高

2. 自增型主键设计(int,bigint)可以降低二级索引的空间,提升二级索引的内存命中率

3. 自增型的主键可以减小page的碎片,提升空间和内存的使用

4. 无主键的表删除,在row模式的主从架构,会导致备库夯住

解释下原因:

1)Innodb中的每张表都会有一个聚集索引,而聚集索引又是以物理磁盘顺序来存储的,自增主键会把数据自动向后插入,避免了插入过程中的聚集索引排序问题。聚集索引的排序,必然会带来大范围的数据的物理移动,这里面带来的磁盘IO性能损耗是非常大的。而如果聚集索引上的值可以改动的话,那么也会触发物理磁盘上的移动,于是就可能出现page分裂,表碎片横生。

2)用户在使用RDS设计自己的表的时候,如果表没有主键,用户在删除数据的时候,由于删除条件没有索引,或者删除的条件过滤性极差,就会导致slave出现hang住,所以一定要为表加上主键,主键可以认为是innodb存储引擎的生命

二、那什么是聚集索引呢?

三、Innodb如何选择一个聚集索引的

对于Innodb,主键毫无疑问是一个聚集索引。但是当一个表没有主键,或者没有一个索引,Innodb会如何处理呢。请看如下规则

1. 如果一个主键被定义了,那么这个主键就是作为聚集索引

2. 如果没有主键被定义,那么该表的第一个唯一非空索引被作为聚集索引

3. 如果没有主键也没有合适的唯一索引,那么innodb内部会生成一个隐藏的主键作为聚集索引,这个隐藏的主键是一个6

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值