摘要:MySQL InnoDB表不推荐使用UUID等字符串做主键,推荐用整型自增ID。
先说简单描述一下结论:使用UUID(通用唯一识别码)等字符串作为主键会因乱序插入而频繁触发页分裂,所以,尽量选择整型连续自增ID作为索引,尤其是主键索引。
在 MySQL 表设计中,主键数据结构的技术选型是影响性能的关键因素。雪花 ID(Snowflake)和 UUID 作为分布式系统中常用的唯一标识符,虽能解决全局唯一性问题,但在 MySQL InnoDB存储引擎中却并非主键的最佳选择。本文将从 MySQL 索引机制、数据存储原理、性能影响等角度,解析为何不推荐使用字符串作为主键。
你如果不了解MySQL索引中数据的存储机制、查询过程和插入过程,请参考《浅析二叉树、B树、B+树、B*树和MySQL索引底层原理》,它介绍了二叉树、AVL树、红黑树、B树、B+树和B*树等六种树的数据结构后,浅析MySQL InnoDB索引选择B+树的原因,并给出一些 MySQL 索引高频面试题。这些知识点对回答上述问题非常非常重要,我简明扼要的归纳与本文密切相关的以下几点索引机制: