MySQL 查询优化的研究和改进
MySQL 查询优化是数据库系统中最基本也是最常用的操作之一,因此查询速度的快慢对数据库用户和设计者极其重要。本文档详细介绍了 MySQL 查询优化性能的研究,对一些常用方法进行了优化改进。
从 MySQL 配置参数调优的方面,主要从数据缓冲区和日志缓冲区两方面详细介绍了 MySQL 相关的调优参数。然后研究了 MySQL 调优的两种方法:人工调优和基于案例的调优,并在此基础上提出了一种动态的自调优算法-爬山法,该方法有效解决了 MySQL 自身两种调优方法存在的不足。
对于查询重用问题,主要针对 MySQL 重用实现存在的两个问题:重用性不高和不能合理处理大数据集,做出了改进。对于前者,通过增加规范 SQL 语句关键字和消除多余无效字符的模块来解决。对于后者,通过增加缓存查询执行计划模块来解决,使用缓存查询计划模块来代替 MySQL原本的缓存查询结果模块。
对于查询重写问题,在研究 MySQL 现有查询重写技术的基础上,以带 IN 谓词的子查询为例归纳了其子查询合并的算法,然后提出了两个查询重写规则,NOT 操作符重写和外连接转换为一般连接。通过重写,确实提高了 MySQL 查询的速度。
针对计划优化问题,主要研究了 MySQL 基于规则的优化和基于代价的优化这两种方法。对于前者,详细的介绍了 MySQL 预定义的一些连接类型及其优先级,对于后者,研究了 MySQL 在决定表连接顺序时所采用的贪婪算法的具体实现。
所有的实验都是采用 TPCH 标准测试,数据量为 10M,实验对改进工作进行了验证,实验结果表明我们的改进工作确实提高了 MySQL 的查询速度。
知识点:
1. MySQL 查询优化的重要性:查询速度的快慢对数据库用户和设计者极其重要。
2. MySQL 配置参数调优:数据缓冲区和日志缓冲区两方面的调优参数。
3. MySQL 调优方法:人工调优和基于案例的调优,爬山法动态自调优算法。
4. 查询重用问题:重用性不高和不能合理处理大数据集,解决方法是增加规范 SQL 语句关键字和消除多余无效字符的模块,缓存查询执行计划模块。
5. 查询重写问题:子查询合并算法,NOT 操作符重写和外连接转换为一般连接。
6. 计划优化问题:基于规则的优化和基于代价的优化,贪婪算法的具体实现。
7. 实验结果:采用 TPCH 标准测试,数据量为 10M,实验结果表明我们的改进工作确实提高了 MySQL 的查询速度。