MySQL 单表大数据量下的 B-tree 高度问题

💡 原文中文,约4100字,阅读约需10分钟。
📝

内容提要

MySQL中单表行数不会影响B树的高度,大表也不会超过4层。即使是单行1KB的表,数据在10TB以内,B树高度也在4层以内,可以存138亿行。MySQL不用担心数据量大时B树高度增加影响性能的问题。

🎯

关键要点

  • MySQL中单表行数不会影响B树的高度,大表也不会超过4层。
  • 即使是单行1KB的表,数据在10TB以内,B树高度也在4层以内,可以存138亿行。
  • DBA们曾担心MySQL表大后B树高度增加会影响性能,但实际情况并非如此。
  • 在InnoDB中,B树主要由叶子页和非叶子页组成,叶子页存储记录,非叶子页存储索引信息。
  • 对于sysbench表,B树的高度在1400亿行和27.9TB数据的情况下不会超过4层。
  • 如果主键是BIGINT,B树仍然可以在4层内存储600亿行和12TB数据。
  • 即使是复杂的表,B树的高度也不会超过4层,能够支持10TB以内的数据。
  • MySQL支持的单表最大容量为64TB,超过10TB后B树高度仍然不会超过5层。
  • PolarDB在线上支持了许多大表实例,用户无需担心性能问题。
➡️

继续阅读