MySQL发号问题的分析和改进
2022/7/14 2:20:12
本文主要是介绍MySQL发号问题的分析和改进,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关于发号器的使用,其实有一个大背景,那就是关于主键的一些设计问题,在MySQL中如果一张表没有主键,实际的数据处理就有点麻烦了。
因为在InnoDB存储引擎中,表都是按照主键的顺序进行存放的,我们叫做聚簇索引表或者索引组织表(IOT)
- 显式的创建主键Primary key。
- 判断表中是否有非空唯一索引,如果有,则为主键。
- 如果都不符合上述条件,则会生成UUID的一个隐式主键(6字节大)
可以使用类似的SQL来看到这个隐藏列:
select _rowid from test
这和主键有什么关系?主要是因为有些时候我们创建主键就是为了创建而创建,没有实际的业务含义,所以会形成一种使用习惯,那就是启用自增列。
自增列的问题很多,有些几句话还说不清楚,大体有如下的一些问题:
- 自增列没有业务含义
- 过度依赖自增列
- 自增列和状态值主键并存,反而影响业务逻辑和性能
- MySQL历史遗留bug,在MySQL 8.0该问题才修复
到了这里,我们的需求也基本明确了,我们所说的发号器其实就是要确保每次取到的ID号都是唯一的,当然也显而易见是趋势递增的。
这篇关于MySQL发号问题的分析和改进的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程