mysql数据库使用32位的uuid作为主键与使用int自增作为主键

使用自增 ID 的内部结构为顺序填充,最大化页面填充率,减少页分裂和碎片,提升性能。然而,自增 ID 也存在潜在问题,如业务增长信息泄露、高并发负载下的锁争用以及自增锁的性能损失。结论是,尽管自增 ID 存在缺点,但在实际开发中,建议遵循 MySQL 官方推荐使用自动增长的主键 ID。MySQL 内部机制...
mysql数据库使用32位的uuid作为主键与使用int自增作为主键
在 MySQL 中设计表时,官方推荐使用自动增长的主键 ID 而非 UUID 或雪花 ID。本文将探讨为何不建议使用 UUID,并分析使用 UUID 的数据库性能问题。

本篇博客将使用控制变量法,通过建立多张表(user_auto_key、user_uuid、user_random_key)并测试它们的插入速度和查询速度。表的区别仅在于主键生成策略,而其它字段保持一致。我们将使用 Spring 的 jdbcTemplate 进行增查测试。

通过技术框架(Springboot+jdbcTemplate+junit+hutool),在相同环境中写入同等数量的数据,分析插入效率。程序采用随机生成的数据,包括名字、邮箱、地址等。

程序写入结果将展示 user_key_auto、user_random_key 和 user_uuid 表的插入情况。同时,通过测试插入 10W 数据,对比在数据量 100W 左右时,UUID 插入效率垫底的现象。

使用 UUID 的索引内部结构与自增 ID 的差异在于,UUID 每次插入的位置不固定,这导致写入目标页可能不在内存中或需要频繁进行页分裂,增加额外操作和数据移动,降低效率。

使用自增 ID 的内部结构为顺序填充,最大化页面填充率,减少页分裂和碎片,提升性能。然而,自增 ID 也存在潜在问题,如业务增长信息泄露、高并发负载下的锁争用以及自增锁的性能损失。

结论是,尽管自增 ID 存在缺点,但在实际开发中,建议遵循 MySQL 官方推荐使用自动增长的主键 ID。MySQL 内部机制复杂,优化空间大,后续开发需深入了解。

本篇博客提供了实验代码和结果分析,以供参考。更多相关技术内容和实践代码请参考附录链接。关注 Java 编程宇宙,获取更多 Java 学习资源。2024-09-09
mengvlog 阅读 9 次 更新于 2025-07-20 02:47:47 我来答关注问题0
  • 通过技术框架(Springboot+jdbcTemplate+junit+hutool),在相同环境中写入同等数量的数据,分析插入效率。程序采用随机生成的数据,包括名字、邮箱、地址等。程序写入结果将展示 user_key_auto、user_random_key 和 user_uuid 表的插入情况。同时,通过测试插入 10W 数据,对比在数据量 100W 左右时,UUID ...

  •  云易网络科技 MySQL安装32位版本教程mysql下载32位安装

    在下载页面中,选择“MySQL Community Server”,接着选择您的操作系统类型、版本和机器架构等信息,最后选择32位的安装包进行下载。2. 安装MySQL 32位版本 下载完成后,双击安装程序进行安装。在安装过程中,您将看到一些选项,如MySQL安装目录、数据目录、MySQL管理用户和密码等信息。推荐使用默认选项进行安...

  • 32位MySQL最大支持4GB的内存,而64位MySQL能够支持更大的内存容量,从几GB到几TB不等。因此,如果你需要处理大量的数据或者需要更大的内存容量,那么64位MySQL是更好的选择。兼容性方面 64位系统需要64位的处理器,因此,要使用64位MySQL,你的计算机硬件必须支持64位的处理器和操作系统。如果你的计算机...

  •  云易网络科技 mysql32位Mysql通用库libmysql使用指南32位mysql的lib

    MYSQL_RES *mysql_store_result(MYSQL *mysql);可以使用mysql_fetch_row()函数获取单个行数据:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);这样,我们就完成了使用libmysql库将32位MySQL服务器连接到C应用程序中的简单介绍。在您的C程序中使用libmysql库可以让您更轻松地访问MySQL数据库,从而大大提...

  • 在计算机中,位数是指处理器的数据总线宽度。32位操作系统可以使用32位的CPU处理器,而64位操作系统则需要64位的CPU处理器支持。在一些情况下,使用32位操作系统可能会受到一些限制。2. 确认操作系统位数 在解决MySQL无法作为有效的32位应用程序的问题之前,我们需要先确认一下我们的操作系统位数。我们可以...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部