| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 非DBA人员从零到一,MySQL InnoDB数据库调优之路(一)-建表 -> 正文阅读 |
|
[大数据]非DBA人员从零到一,MySQL InnoDB数据库调优之路(一)-建表 |
在离职的这段期间,除了忙于解决家里的事外,还对之前的工作做了一些总结,这次想根据我工作的经验结合书本理论介绍一下我对数据库调优的理解。 1.规范一般公司内部要注意的规范有两种:表、字段命名和字段类型及长度控制 1.1 表、字段命名先看一下下面的表名 T_USER_USERINFO:T的意思就是Table,USER代表这个表属于用户服务域,USERINFO代表这张表记录用户信息。 再看一下几个字段名 USERINFO_ID:用户信息主键ID USERINFO_NAME:用户名称 总结下来我觉得公司的规范就是为了让我们建出来的表能使任何人在初次看到的时候能充分理解其意思,还有就是更好的管理。 1.2 字段类型及长度控制为什么建表的时候也要严格控制字段的数据类型及长度,我们在这里只要知道严格控制字段的数据类型及长度可以影响1行数据的容量,关于数据类型和长度对表容量影响背后的逻辑我会在第二章节更细节地进行分析。 2 重要的理论与设计2.1 局部性原理与磁盘预读2.1.1 访问局部性
2.1.2 磁盘预读为了尽量减少I/O操作,计算机系统一般采取预读的方式,预读的长度一般为页(page)的整倍数。页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(在许多操作系统中,页得大小通常为4k)。 2.2. B+树在这篇博文我不会讨论为什么会使用B+树,我在这里只会给大家描述InnoDB的B+树是怎么样的,更详尽的分析将会留到下一篇博文进行阐述。 1.B+树非叶子节点只存储键值信息 2.2.1 B+树的数据量计算我们已知2.1小节中磁盘预读选择了文件系统页的整倍数作为预读的长度规划,而在InnoDB中我们最后选择了文件系统的4页(16KB)作为我们表最基础单位页的存储空间,又因为非叶子节点的结构是: “页指针 + 键值”, 我们假设主键 ID 为 bigint 类型, 长度为 8字节(byte) , 而指针大小在 InnoDB 源码中设置为 6 字节(byte),这样一共 14 字节(byte) , 因为一个页可以存放 16k 个 byte, 所以一个页可以存放的指针个数为 16384/14=1170 个。 按我们日常的推荐 B+树层数来计算三层结构我们第一层和第二层可以定位到1170 * 1170 个指针, 所以一共可以存放 1170*1170*(16KB/单条数据占用KB数)条数据,这也是我们平常假设当1条数据大少为1KB的时候我们的三层B+树的存储量为21902400行记录。 3. 结语我们在工作中经常被教导建表很重要,通过第二小节的理论可以看出我们在建表的时候,因为已知加载一页数据的IO损耗是不变的,当我们如同第一小节要求那样在建表时候足够的合理,确保一条数据足够的小的时候,又因为访问局部性原理,更少的相邻页查询得到我们想要的结果,从而实现了查询速度的优化。 当然在工作中遇到更多的是各种约束下的查询,我会在下一篇博文结合其他内容,和大家分析我在工作中如何设计索引,达到高效的查询数据。 书籍:《MySQL技术内幕:InnoDB存储引擎(第2版)》 参考:访问局部性??????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:43:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |