为什么mysql主键不建议用字符串_我为什么不建议开发中使用UUID作为MySQL的主键...

我是少侠露飞。学习塑造人生,技术改变世界。

引言

我在之前一篇博客专门介绍了MySQL聚簇索引和非聚簇索引,附传送门:

【享学MySQL】系列:MySQL索引的数据结构,索引种类及聚簇索引和非聚簇索引

简单来说,就是我们设计表的时候,基本都会人为设定一个主键,这就是聚簇索引(如果没有设定主键,MySQL会选择非空不唯一的字段作为聚簇索引,如果依然没有,则MySQL会选择自己隐藏列row_id作为聚簇索引)。

MySQL主键分为自增主键和UUID两种形式。今天我们就针对这个主键的生成深入探究一下。

自增主键和UUID比较

首先需要明确一点,自增主键是整数,UUID是字符串类型(一般为36位)。

所以UUID相比自增主键一个首要的缺点就是UUID主键索引占据空间更大。

其次我们再来分别来看看两种主键生成方式插入数据时发生的情况。

自增主键的插入:

e31d5d6bfce88e35b68009312bae8a11.png

如上图所示,InnoDB把每条记录都保存在前一条记录的后面,因为主键的值是顺序的。当达到页面最大的填充因子(Fill Factor)(InnoDB初始的填充因子是15/16),后一条记录就会写入新页面。

UUID主键的插入

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值