论文部分内容阅读
数据库物理结构(索引,物化视图,裂片等)的改变虽然不影响查询结果,但会影响数据库性能。数据库的物理结构、查询优化引擎和执行引擎构成了影响数据库性能的三大要素。
第一代关系数据库系统主要用于联机事务处理,数据规模还不太大,其优化执行引擎相对简单,物理结构设计的重要性还不凸显。现代数据库系统已广泛应用于决策支持等领域,由于数据量大,查询语句复杂,查询优化引擎和执行引擎变得越来越复杂,物理结构也从单一的索引扩展到索引、物化视图和裂片,数据库管理员(DBA)已经不能再依赖简单的优化执行引擎模型,因此数据库系统的物理结构设计变得尤为重要。数据库查询优化引擎的复杂性使DBA不再能准确地预测数据库执行查询使用的存取路径。物理结构的选择是一个NP-HARD问题,所以也不能可能通过穷举的方法来选择。
数据库物理结构的选择日渐成为数据库领域的一个研究热点。现在主流商业数据库(Microsoft SQL Server,Oracle, DB2)已经附带了数据库物理结构优化的实用工具。而最流行的开源数据库MySQL却只能依赖低级的EXPLAIN语句进行数据库性能调整,因此本文将对MySQL进行研究,并重构MySQL使其支持数据库物理结构的自动优化功能。
本文在分析数据库物理结构自动优化的研究背景和最新研究成果的基础上,以MySQL6.0.0 alpha版为标准,介绍MySQL服务器的架构、查询解析模块和查询优化模块,进一步实现数据库物理结构的自动优化工具。主要工作包括修改查询优化引擎使其支持“What-if”接口;添加虚拟索引生成模块进行受限的物理结构枚举并通过“What-if”接口将虚拟索引添加到数据库服务器中,使查询优化引擎可以使用虚拟的物理结构;添加统计信息生成模块使查询优化引擎可以比较准确地计算物理结构的性能;添加物理结构搜索模块为整个作业量搜索合适的物理结构。还对添加的物理结构优化功能进行了性能测试。实验结果说明优化后MySQL使用索引的频率有了明显的提高,全表扫描的频率和每个查询需要处理的信息量有了明显的下降,数据库性能得到了显著的提升。
数据库自动优化是自主计算[4]领域的重要组成部分,自主计算致力于研究自维护的软件系统,减少软件系统的维护成本。数据库系统是现代软件系统的信息中枢,随着信息规模的增大,数据库系统的性能对这些软件系统的有效性起着决定性的作用。本文解决了MySQL在自主计算领域的一个基本问题——物理结构的自动优化,一定程度上降低了MySQL的维护成本。
优化的过程需要DBA的参与。进一步的工作包括添加系统监控模块,调整决策模块。系统监控模块在线监控MySQL服务器状态,调整决策模块分析监控数据并决定是否需要调整数据库。