1、主键类型策略
建议采用自增长int型为主键,主键的数据应该与应用无关,不建议采用字符串作为主键。因为采用数字作为主键可以保证数据行是按照顺序写入,但是采用字符串为主键可能导致随机写入,进而导致数据的频繁移动,甚至导致页分裂影响性能。InnoDB页分裂的最大填充因为为15/16。
2、使用字符串作为主键的缺点:
2.1、由于字符串作为主键是随机写入,所以可能写入的目标页已经刷新到了磁盘中并从缓存中删除了,或者还没有加载到内存中。此时在插入之前不得不先找到对应数据,加载到内存中,在进行插入操作
2.2、因为写入数据为乱序的,所以mysql不得不频繁进行分页操作,以便为新的行分配空间。页分裂会导致大量的数据移动
2.3、由于频繁页分裂,页会变得稀疏并不规则的被填充,最终导致数据会有碎片
3、顺序主键缺点:
3.1、并发插入导致间隙锁竞争加剧
3.2、自增长的情况下,也会导致获取AUTO_INCREMENT获取加剧
基于InnoDB索引主键策略
最新推荐文章于 2024-01-31 22:49:43 发布