MySQL多少行数据就考虑分库分表?

    源自于 一个常见的面试题 和 在生产环境中会考虑到的问题。

    基于大部分常见下使用到的MySQL引擎是InnoDB,而InnoDB采用的是b+树,又考虑到b+树的结构大概是这样的

    image.png

    众所周知MySQL数据库存储的基本单位是页,对于一棵 B+ 树的索引来说,是先从根节点找到叶子节点,也就是先查找数据行所在的页,再将页读入到内存中,在内存中对页的记录进行查找,从而得到想要数据,想要查找的,只是一行记录,但是对于磁盘 I/O 来说却需要加载一页的信息,因为页是最小的存储单位。所以对于InnoDB引擎来说就是要考虑到达了3、4阶基本上就要考虑分库分表了。