本文共 584 字,大约阅读时间需要 1 分钟。
1.MySQL为什么要用数字做自增主键?
首先为什么我们使用的是int类型,而不是varchar类型
- int永远是固定的4个字节,而char类型是1~255字节之间
优点
- 占用空间小,节省CPU开销
- 在使用中,通常会在主键上建立索引,使用整形可以将更多地索引载入内存,提高性能
- 使用整形才可以使用AUTO_INCREAMENT
缺点
- 产生锁竞争的问题 在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对数据表A进行查询或者更新的操作。当某个线程涉及到更新操作时,就需要获得独占的访问权。在更新的过程中,所有其它想要访问这个表的线程必须要等到其更新完成为止。此时就会导致锁竞争的问题。
2.为什么不能没有主键?
- 主键起到了一个唯一标识的作用,保证我们可以安全的更改或删除表中指定的某一行
成为主键需要具备的两个条件
- 任何两行都不具有相同的主键值
- 每个行都必须具有一个主键值(主键列不允许NULL值)
3.主键的选择顺序?
- (只选择这一个)选择与业务内容无关的一个自增字段作为主键
- 使用自增主键,那么新来的数据就顺序插入到末尾,当一页写满,操作系统开辟另一页供写;如果使用的是非自增主键,那么主键的值就是随机的,那么插入的时候就需要,插入到现有索引页的某一个位置。这时目标页的数据就需要移动,再从磁盘读取,增加了很多开销,且容易产生内存碎片。
转载地址:http://pkorb.baihongyu.com/