各位同学好,今天给大家讲一下MySQL数据库在设计主键时,应该使用哪种数据类型。我们知道,咱们在设计数据库时,主键是必须设置的。一般情况下,咱们都会选择使用主键自增或者UUID这两种主键策略。那么这两个哪种更好呢?我们应该使用哪一种呢,今天就请大家跟老徐来一起来学习一下吧。
一. 主键自增
-
使用自增长做主键的优点
很小的数据存储空间;
性能最好;
容易记忆。
-
使用自增长做主键的缺点
如果存在大量的数据,可能会超出自增长的取值范围;
很难(并不是不能)处理分布式存储的数据表,尤其是需要合并表的情况下;
安全性低,因为是有规律的,容易被非法获取数据。
二. UUID
-
使用UUID做主键的优点
它是独一无二的,出现重复的机会少;
适合大量数据中的插入和更新操作,尤其是在高并发和分布式环境下;
跨服务器数据合并非常方便;
安全性较高。
-
使用UUID做主键的缺点
存储空间大(16 byte),因此它将会占用更多的磁盘空间;
会降低性能;
很难记忆。
三. 使用选择
那么一般情况下,对于以上两种主键策略,我们该如何选择呢?
一般情况下,MySQL推荐我们使用自增ID。这是因为在MySQL的 InnoDB 存储引擎中,主键索引是聚簇索引,主键索引的B+树叶子节点会按照顺序存储主键的值及数据。如果主键索引是自增ID,只需要按顺序往后排列即可;如果是UUID,ID是随机生成的,所以在数据插入时会造成大量的数据移动,产生大量的内存碎片,造成插入性能的下降。
如果我们要结合具体的项目,又该选择哪种注解策略呢?此时要分如下几种情况:
项目是单机版的,并且数据量比较大(百万级)时,用自增长的,此时最好能考虑下安全性,做些安全措施。
项目是单机版的,并且数据量没那么大,对速度和存储要求不高时,用UUID。
项目是分布式的,那么首选UUID,分布式一般对速度和存储要求不高。
项目是分布式的,并且数据量达到千万级别可更高时,对速度和存储有要求时,可以用自增长。
现在你知道在MySQL中,该如何选择主键策略了吗?关注小千,干货天天都不断!
当然如果各位觉得以上的内容不过瘾,还想详细了解MySQL相关技术知识,观看MySQL专业全面的技术课程,免费的哦!
MySQL数据库教程,mysql安装到mysql高级一套通关