MySQL什么时候需要进行分表
2022/1/13 19:03:50
本文主要是介绍MySQL什么时候需要进行分表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
博客书写不易,转载请注明出处!
前提:mysql使用InnoDB事务型引擎,由于使用InnoDB那么默认的索引树则为B+数
先给结论:当数据到达千万时可以考虑分表了
===============================感兴趣可以看以下计算方式===============================
B+数知识点:
- B+树非叶子节点只存储索引
- B+树每层的索引有重复
- B+树叶子节点(也就是最后一个节点)才有数据
- B+树叶子节点指针是双向的
共识:树的层级越高,查询速度越慢,索引占据内存越大
为了保障数据的高效查询,减少B+数的查询层数,这里规定B+数只有三层为高效
前置条件:
- 这里约束B+数只有三层为高效查询,大于三层不做考虑
Q:那么三层的B+数能存放多少数据,表数据达到多少后需要进行优化?
基础知识点:
- innoDB最小单位为页,一页为16K
- 主键一般为bigint 8字节,指针大小在InnoDB是6字节
- B+数最后一层包含数据
B+数模型如下:
由上面基础信息和图可以得出三层数据量
- 每页能存放(主键+指针)的数量:16*1024/(8+6)=1170
- 第一层:能存放 1170 个
- 第二层:能存放 1170 * 1170 个
- 第三层:由于限制只有三层,B+数最后一层包含数据,设每条数据为1KB,那么第三层的数据数量为:1170*1170*16/1=21902400 所以当数据到达千万时可以考虑分表了,否则树高超过三层,会导致查询效率变差
这篇关于MySQL什么时候需要进行分表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料