论文部分内容阅读
关系型数据库系统具有大量用于I/O优化、并行计算、查询计划、内存分配、日志等方面的配置参数。普通用户甚至数据库专家都很难将其进行调优以获得良好的性能。虽然有很多可用于数据库调优的操作指南,但指南不可以一直为数据库提供优越的性能。尽管可以凭借指南来在特定数据库使用场景下发挥出不错的性能表现,但它们并非适用于所有场景。很多机构不得不雇佣昂贵的人力来对数据库系统进行调优。同时随着信息技术的高速发展,后台系统中多系统相互依赖和影响的情况越来越突出。以往针对性能、可用性和可靠性的研究主要面向单一系统,单节点或多节点,相对忽视了多系统情况的整体优化目标。本研究的目的是在单一系统调优的基础上,提出能有效扩展到多系统的调优方法,并开发一套调优工具。本文贡献分为如下三个方面:首先构建调优模型,将基于关系型数据库PostgreSQL和分布式计算框架Spark共同构建一个存储与计算相分离并且资源弹性配置的数据仓库DuoSQL纳入调优模型并将其设置为本文的调优对象。基于DuoSQL中PostgreSQL、Spark工作中相互影响的事实,将二者参数统一纳入面向多系统的调优模型,整体考虑系统参数对面向多系统数据库的影响。实现了在单一数据库系统调优的基础上构建面向多系统的数据库调优模型。其次是在调优模型的基础上对性能衡量指标进行降维、聚类处理,使其成为非冗余数据。并对PostgreSQL、Spark的配置参数进行权重排序,减少数据中噪音的数量,提高数据的质量。对调优模型中对数据库内部测量值将系统的工作负载进行映射匹配,使用高斯过程回归和梯度下降,帮助调优模型推荐优秀性能表现下的配置参数。最后是针对DuoSQL在大规模数据处理中,PostgreSQL与Spark集群之间需要数据交互的情况下,运行中各阶段耗费时间的占比相差过大的问题。因此我们根据不同系统的参数空间进行分级,划分为网络资源参数空间、计算资源参数空间,在参数分类的基础下针对不同使用情景形成协同调优策略进行更细粒度的调优,从而优化查询时间及各阶段时间占比结构。