大型单表中的MySQL B树高度问题
💡
原文英文,约1200词,阅读约需5分钟。
📝
内容提要
过去建议MySQL表不超过500万行,担心B树高度增加影响性能。实际上,B树是一个非常扁平的结构,大多数不超过4层。对于一个有1400亿行和27.9TB大小的表,B树高度不超过4层,不用担心性能问题。使用BIGINT作为主键,四级B树可以存储600亿行和12TB数据。即使使用UUID作为主键,MySQL的B树深度也不会超过5级,可以存储到3.8万亿行和386TB数据。总之,不用担心B树高度随数据增长而影响性能,合理设计表结构,大表完全可管理。
🎯
关键要点
- 过去建议MySQL表不超过500万行,担心B树高度增加影响性能。
- 实际上,B树是一个非常扁平的结构,大多数不超过4层。
- 对于1400亿行和27.9TB大小的表,B树高度不超过4层,性能无忧。
- 使用BIGINT作为主键,四级B树可以存储600亿行和12TB数据。
- 即使使用UUID作为主键,MySQL的B树深度也不会超过5级,可以存储到3.8万亿行和386TB数据。
- 合理设计表结构,大表完全可管理,不必担心B树高度影响性能。
- 复杂表结构如SaaS场景下,B树高度仍可保持在4层以内。
- MySQL最佳实践建议避免使用UUID作为主键。
- 即使使用UUID,B树深度也不会超过5级,能够存储大量数据。
- 总之,数据量增长不会显著影响B树性能,合理设计可应对大表。
➡️