关键词:
数据库系统
查询优化
教学工具
关联规则
摘要:
由于关系型数据库在商业界的广泛使用,当今市场对于数据库专业人员的需求量不断增加。对于数据库开发工程师而言,查询优化是数据库内核中至关重要的一个模块,包括词法分析、语法分析、逻辑计划重写、物理计划优化、执行计划等多个阶段。经过调研发现,目前业界数据库教学相关工具仅能够帮助编写SQL查询和理解执行计划。深入到特定的优化阶段,这些工具并不能解释优化的具体方法、算子的具体效果。因此,亟需一个面向数据库工程师和学习者,针对查询优化全流程进行解析的交互式学习工具。
基于上述背景,本文设计和实现了一个数据库查询优化流程的交互式学习工具DBinsight,该系统能够将查询流程的信息详细、完整地呈现给用户,并允许用户和系统进行交互,干预执行计划的生成。
首先,本文在研究和凝练当前关系型数据库的主流优化器原理和实现机制的共性特点的基础上,提出了查询处理内核规范化数据接口标准,覆盖了展示信息的规范化和数据内容的规范化两大核心要素。本文提出了两种规范化数据的获取方式,并通过具体样例进行说明。设置规范化标准是为了针对主流数据库系统优化器设计的不同策略和多样化数据结构,因此本文面向以下两类典型用户群体设计系统架构:数据库专家和普通学习者,前者负责提供规范化数据文件配置接口,后者专注于在系统中深入学习。
其次,本文面向数据库内核的学习者设计并实现了一系列对应的算法模块,包括规则开关、查询生成、描述摘要的交互功能,以便学习者结合自身的知识点需求,有的放矢地获取更多的查询计划。基于上述一系列系统架构和各模块算法模型的设计,本文结合以下两种关系型数据库进行了系统实现:Cockroach DB和Zn Base数据库。完成系统整体的编码后,根据需求编写测试用例对系统功能做详尽测试和记录,并测试了系统的非功能性需求。
最后,DBinsight系统的线上版本被投入到西安电子科技大学、浪潮集团的数据库学习者、工程师的教学和培训中使用,通过查看这期间的日志,发现查询优化过程存在规则组合应用的可能性。以此为基础,本文提出利用Apriori和Prefix Span算法挖掘日志中频繁的规则集,并提出这些规则集的使用建议,以此启发学习者利用关联规则对优化器性能进行提升,促进学习者在此基础上进行自主探索和后续学习。经过实验发现,当规则的支持度大于22%时,置信度在0.8以上,合并关联的规则后对优化器执行效率有所提升,可以考虑为它们定制专门的规则模式;否则,当指标过低,合并规则对于优化器反而降低优化器性能。
数据库查询优化流程的交互式学习工具填补了数据库教学工具上这方面的空白,有效提高了学习者的学习效率,对优化流程的后续研究也有一定作用。