论文部分内容阅读
随着互联网的迅速发展,网络应用程序的开发呈现多层体系结构,数据库系统的性能在整个应用程序的体系结构中体现着尤为重要的作用,与此同时,互联网的用户在迅速增加,数据库负载变得不可预测并且呈现出多样性和复杂性,传统的依靠DBA(Database Administrator)的经验来优化数据库系统,满足日益复杂多变的负载变得不现实,而且这对DBA有着较高的要求,并且聘用一名优秀的DBA需要付出较为昂贵的费用,在这样的条件下,自适应技术变的越来越重要。自适应是自主计算的核心,数据库的自适应技术是自主计算的一个分支,为了实现负载的自适应管理,本文设计了查询调度器来实现负载的自主管理。查询调度器的设计原理是依据负载自主管理框架(AWMF:Autonomic workload Management Framework)实现的。数据库系统负载的管理是满足负载性能目标的一个过程,其最终目的是满足所有负载的多个性能目标。多个负载运行在单一的数据库系统中,不可避免的会产生资源的竞争,如:CPU资源、缓冲池、内存、磁盘I/O等。如果允许一些负载获得较多的系统资源而不加以控制,那么其它并发的查询则必须等待这些查询执行完成后释放资源才可执行。最终导致这些等待的查询将不能满足性能目标,整个数据库系统的性能将会降低。在这样的情况下,通过引入重要性的概念来区分多个负载变得有意义,在不能满足系统所有负载的情况下,优先满足较重要的负载,同时又不失去不重要负载的性能目标。通过重要性来管理多个负载能够按照负载的特征和要求来满足性能要求,负载重要性通过效用来体现。数据库系统的性能评价标准往往有多个,通常负载需要满足多个性能目标要求,多个性能目标存在相互约束关系,而且不同负载对多个性能目标有着不同的权重依赖,例如交易类的负载需要较好的吞吐量,而决策类的负载则需要较好的响应时间,还有一些负载需要同时兼顾响应时间和吞吐量,这大大增加了负载管理的难度。要有效地管理负载的多个性能目标就需要合理的机制将性能目标映射为具体的底层操作方案。本文提出一个框架结构来实现这一功能,该框架使用效用函数来封装负载的性能目标和重要性,通过效用函数构造目标函数并进行优化来求解资源的最优分配方案,最后总结出效用函数选择的基本准则,针对不同的性能目标设计相应的效用函数来封装管理,本文从响应时间和吞吐量这两个角度来验证所提方法的有效性。不同的负载对响应时间和吞吐量有着不同的权重依赖,所以多目标的优化采用权重系数法来求解。