MySQL为什么要用数字做自增主键?

1.MySQL为什么要用数字做自增主键?

首先为什么我们使用的是int类型,而不是varchar类型

  • int永远是固定的4个字节,而char类型是1~255字节之间

优点

  1. 占用空间小,节省CPU开销
  2. 在使用中,通常会在主键上建立索引,使用整形可以将更多地索引载入内存,提高性能
  3. 使用整形才可以使用AUTO_INCREAMENT

缺点

  • 产生锁竞争的问题
    在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对数据表A进行查询或者更新的操作。当某个线程涉及到更新操作时,就需要获得独占的访问权。在更新的过程中,所有其它想要访问这个表的线程必须要等到其更新完成为止。此时就会导致锁竞争的问题。

2.为什么不能没有主键?

  • 主键起到了一个唯一标识的作用,保证我们可以安全的更改或删除表中指定的某一行

成为主键需要具备的两个条件

  1. 任何两行都不具有相同的主键值
  2. 每个行都必须具有一个主键值(主键列不允许NULL值)

3.主键的选择顺序?

  • (只选择这一个)选择与业务内容无关的一个自增字段作为主键
    • 使用自增主键,那么新来的数据就顺序插入到末尾,当一页写满,操作系统开辟另一页供写;如果使用的是非自增主键,那么主键的值就是随机的,那么插入的时候就需要,插入到现有索引页的某一个位置。这时目标页的数据就需要移动,再从磁盘读取,增加了很多开销,且容易产生内存碎片。
  • 参考
发布了257 篇原创文章 · 获赞 223 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/csdn_kou/article/details/103578317