Advertisement

数据库主键到底是用自增长好还是UUID好

阅读量:

各位同学好!今天与大家分享关于MySQL数据库主键设计的相关知识。我们都知道,在构建数据库系统时,默认情况下都需要为每个表设置一个主键字段。通常情况下我们会倾向于采用自增ID或UUID两种常见类型的主键策略进行表结构设计。那么问题来了:自增ID和UUID这两种类型哪一个更适合我们的场景呢?希望通过今天的分享能让大家对MySQL数据库的主键设计有更清晰的认识与掌握!

一. 主键****自增

1.使用自增长做主键的优点

很小的数据存储空间;

性能最好;

容易记忆。

2.使用自增长做主键的缺点

当大量数据存在时(或海量数据时),可能导致自增长范围突破;

难以处理分布式存储的数据表,在需要合并表时尤其如此;

安全性较低的原因是因为其规律性导致容易遭受非法获取。

二. UUID

1.使用UUID做主键的优点

具有专有性,在相同条件下难以实现完全复制;

它在高并发及分布式系统中提供高效的批量处理能力;

跨服务器的数据整合极为便捷;

其安全性能较为出色。

2.使用UUID做主键的缺点

存储空间大(16 byte),因此它将会占用更多的磁盘空间;

会降低性能;

很难记忆。

三. 使用选择

那么一般情况下,对于以上两种主键策略,我们该如何选择呢?

一般情况下 MySQL通常建议采用自增ID作为主键 这得益于MySQL InnoDB存储引擎的特点 在InnoDB引擎下 主键字段会默认按顺序存储于B+树节点中 当选择自增ID作为主键时 由于其字段值本身即具备递增特性 因此只需将其字段值依次递增即可 而UUID则不同 它是由计算机随机生成 不遵循特定规则 在执行数据插入操作时 由于UUID字段值的非规则生成可能导致频繁的数据迁移 从而引发严重的内存碎片问题 Affects insertion performance adversely

如果要结合具体的项目,则需选择何种注解策略?具体应根据以下几种情况进行分析。

在项目为单机架构并面对着海量级别的数据量时,
建议采用自增型主键,
同时建议采取相应的安全性保障措施。
*
在项目为单机架构并处理中低规模的数据量,
在这种情况下,
建议采用UUID作为主键方案。
*
对于分布式架构系统而言,
默认情况下优先选用UUID作为主键方案,
这种情况下,
系统通常会对速度与存储资源的要求不高。
*
当项目为分布式架构并且面对着千万级别以上的高负载场景,
如果系统对于速度与存储资源的要求较高,
推荐采用自增型主键方案。

现在你知道在MySQL中如何设置合适的主键策略了吗?关注公众号小千获取更多干货知识!

当然啦!朋友们如果觉得以上内容还不够满足需求的话,请想一想是否想要深入了解MySQL的相关技术知识呢?这边点击下方就可以观看专业的 MySQL 技术课程哦!

src的位置是 'https://player.bilibili.com/player.html?aid=633582932' ,允许 fullscreen 属性设置为 true

MySQL数据库教程,mysql安装到mysql高级一套通关

全部评论 (0)

还没有任何评论哟~