一种结构化查询语言(SQL)脚本的性能分析与预测方法与系统技术方案

技术编号:9356655 阅读:215 留言:0更新日期:2013-11-20 23:49
本发明专利技术提供了一种结构化查询语言(SQL)脚本的性能分析与预测方法,其包括:提取结构化查询语言脚本运行的信息;定位数据库中性能消耗占比大于一预设值的结构化查询语言脚本;对定位到的结构化查询语言脚本进行优化;运行优化后的结构化查询语言脚本,并比较结构化查询语言脚本优化前后的性能差异;以及,将比较得到的优化差异记录到经验数据库的步骤。本发明专利技术提供了一个数据库性能问题在SQL脚本层面的定位与预测功能:可计算出每句SQL脚本消耗当前数据库服务器的CPU和IO的占比;由此预测不同的调优方法对数据库服务器带来的直接变化,其可大大提高优化效率,降低优化成本和风险。

【技术实现步骤摘要】
一种结构化查询语言(SQL)脚本的性能分析与预测方法与系统
本专利技术涉及一种基于对企业数据库中产生的结构化查询语言(SQL)脚本的性能分析与预测的而实现的数据性能监控方法和系统。
技术介绍
随着企业信息系统日益庞大、数据量与日俱增,就会出现数据访问、运算等方面的性能问题,例如,某个企业的SQLserver可能会运行几万个SQL脚本,而这些脚本如设计不能满足当前实时的业务需求则可能会占用大量个数据库服务器的CPU和IO资源,从而拖累数据库服务器的响应和处理速度。由于每个企业的数据架构、数据分布、使用方式、使用场景等方面存在巨大差异,所以现在主流数据库管理软件基本只提供一些通用的数据性能监控方面的功能。SQLserver本身提供了其部属的服务器两次开关机之间的SQL脚本运行的累计logicalreads的统计,SQLserver使用者可以以此作为脚本的语句运行时服务器CPU消耗的参考量,但由于logicalreads的统计本身与CPU没有必然的内在的联系,因此,以此作为SQL脚本的优化的基础往往会白费工夫,即调整的语句可能在实际运行中的CPU消耗并不大。这样,开发人员就很难有效率的定位实际存在问题的SQL脚本的语句并对其进行优化和调整。
技术实现思路
本专利技术的目的是解决以上问题,通过搜集、分析数据库管理软件提供的数据性能信息,并集合企业自身各种特性、场景进行研发,提出一种可实现精确定位众多数据脚本中的性能问题和优化方向,并能根据业务预测不同优化方案带来的实际效果的数据库SQL脚本性能监控与预测方法和装置。为实现以上目的,本专利技术的一个方面提出了一种结构化查询语言(SQL)脚本的性能分析与预测方法,该方法中,数据库服务器(DB服务器)上除操作系统外仅部署SQL服务器,该方法包括以下步骤:提取结构化查询语言脚本运行的信息;定位数据库中性能消耗占比大于一预设值的结构化查询语言脚本;对定位到的结构化查询语言脚本进行优化;运行优化后的结构化查询语言脚本,并比较结构化查询语言脚本优化前后的性能差异,以及,将比较得到的优化差异记录到经验数据库。可以将不同脚本运行环境的脚本优化前后对数据库性能的影响情况记录进入经验数据库。所述性能差异指数据库服务器的CPU和I/O的占比的变化。其中,提取SQL脚本运行的信息可通过结构化查询语言服务器提供的DMV(DynamicManagementViews)数据,通过每日提取所有数据库服务器在一段时间内累计运行的SQL脚本和其运行信息实现。计算结构化查询语言脚本与数据库服务器的性能消耗比采用一下方式实现即通过SQLPLAN来唯一标识多天中运行的SQL脚本,并可以计算出每天每句SQL运行的[schema_name],[object_name],[creation_time],[last_execution_time],[total_physical_reads],[total_logical_reads],[total_logical_writes],[execution_count],[total_worker_time],[total_elapsed_time],[avg_elapsed_time]这些语句中的至少一项。通过结构化查询语言脚本在数据库服务器的性能消耗占比来排名,其中排名高的SQL脚本一般会引起问题,从而最终确认数据库性能问题是由哪些SQL脚本引起的。在确认引起数据库性能问题的SQL脚本后,需要对相关的SQL脚本进行优化,再在下一周期内计算优化后的SQL脚本的性能,并与优化前的该脚本的性能进行对比,从而判断优化前后性能差异。记录每台数据库服务器长期的SQL脚本运行信息,例如1年的SQL运行记录,并对这些信息做回归分析,从而形成经验数据库,最后再根据每台服务器实际优化过的案例,来分析预测的误差率。可以用该经验数据库预测后续的优化可能产生的效果,它的作用是告诉开发人员,对某句SQL语句最大可以的优化效果,以此来判断我们是否有必要对其进行优化(如:CPU、I/O等会提升多少性能)。本专利技术的另一方面提供了一种结构化查询语言(SQL)脚本的性能分析与预测系统,其包括提取结构化查询语言脚本运行的信息的装置;定位数据库中性能消耗占比大于一预设值的结构化查询语言脚本的装置;对定位到的结构化查询语言脚本进行优化的装置;运行优化后的结构化查询语言脚本,并比较结构化查询语言脚本优化前后的性能差异的装置;以及,将比较得到的优化差异记录到经验数据库的装置。可以将不同脚本运行环境的脚本优化前后对数据库性能的影响情况记录进入经验数据库。其中,所述性能差异指数据库服务器的CPU和I/O的占比的变化。其中,提取SQL脚本运行的信息的装置可通过结构化查询语言服务器提供的DMV数据,通过每日提取所有数据库服务器在一段时间内累计运行的结构化查询语言脚本和其运行信息实现。计算结构化查询语言脚本与数据库服务器的性能消耗比的装置可以包括:通过SQLPLAN来唯一标识多天中运行的SQL,并可以计算出每天每句SQL运行的[schema_name],[object_name],[creation_time],[last_execution_time],[total_physical_reads],[total_logical_reads],[total_logical_writes],[execution_count],[total_worker_time],[total_elapsed_time],[avg_elapsed_time]这些语句中的至少一项的差异。通过结构化查询语言脚本在数据库服务器的性能消耗占比来排名,最终确认数据库性能问题是由哪些SQL脚本引起的。本专利技术提供了一个数据库性能问题在SQL脚本层面的定位与预测功能:可计算出每句SQL脚本消耗当前数据库服务器的CPU和IO的占比;由此预测不同的调优方法对数据库服务器带来的直接变化,其可大大提高优化效率,降低优化成本和风险。附图说明图1:结构化查询语言脚本在数据库服务器的性能消耗占比。图2:结构化查询语言脚本前后版本的性能差异,其中可见优化后效果非常明显,这句SQL的性能消耗已经降低到0.005%以下。图3:优化结构化查询语言脚本对数据库服务器的效果,由该图可见:原先CPU溢出部分的性能问题是由某句SQL引起的,优化此SQL后,这个性能问题消失了。图4A、4B:显示了如何从网站众多的DB服务器中收集每条SQL语句的运行信息,并进行初步的信息整合。图5:依据本专利技术的方法的系统流程图。图6A、6B:显示了SQL脚本优化前后性能对比。具体实施方式下面参照附图对本专利技术的各种具体实施方式作具体说明。本专利技术的SQLserver部属于一台仅具有操作系统的数据库服务器上,从而,SQLserver的运行将占用操作系统上显示的数据库服务器CPU使用率的90%左右。从而,可以将SQLserver的SQL脚本的运行与数据库服务器中CPU的使用率直接对应。这样可以使得SQLserver执行的各SQL脚本的SQL_IO占比直接反映执行该SQL脚本的数据库服务器的CPU消耗占比。图4是提取SQL脚本运行的信息的部署图,如图4所示,首先,需要收集每台数据库服务器(DB服务器)的SQL脚本本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201310256453.html" title="一种结构化查询语言(SQL)脚本的性能分析与预测方法与系统原文来自X技术">结构化查询语言(SQL)脚本的性能分析与预测方法与系统</a>

【技术保护点】
一种结构化查询语言(SQL)脚本的性能分析与预测方法,其包括以下步骤提取结构化查询语言脚本运行的信息;定位数据库中性能消耗占比大于一预设值的结构化查询语言脚本;对定位到的结构化查询语言脚本进行优化;运行优化后的结构化查询语言脚本,并比较结构化查询语言脚本优化前后的性能差异;以及,将比较得到的优化差异记录到经验数据库。

【技术特征摘要】
1.一种结构化查询语言脚本的性能分析与预测方法,其包括以下步骤通过在每台数据库服务器上部署提取SQLSERVERDMV信息的工作提取单台数据库服务器的数据;把单台数据库服务器上收集的数据汇总到一台运算数据库服务器;由所述运算数据库服务器计算结构化查询语言脚本与数据库服务器的性能消耗占比和各数据库服务器运行结构化查询语言脚本当天与前一天的性能差异;根据所述性能差异和各数据库服务器windows的性能指标信息,计算出具体的性能消耗占比排名,并把计算结果同步到用于展示结果的WEB程序的数据库服务器上;根据所述性能消耗占比排名,定位数据库中性能消耗占比大于一预设值的结构化查询语言脚本;对定位到的结构化查询语言脚本的语句结构进行优化,使所述定位到的结构化查询语言脚本的SQL_IO消耗占比达到预设值;运行优化后的结构化查询语言脚本,并对结构化查询语言脚本优化前后的性能进行对比得出性能差异;对所述性能差异及每台数据库服务器上的结构化查询语言运行记录做回归分析,形成经验数据库;利用该经验数据库预测后续优化可能产生的效果。2.根据权利要求1中的方法,其特征在于:所述性能差异指数据库服务器的CPU和I/O的占比的变化。3.根据权利要求1中的方法,其特征在于:计算结构化查询语言脚本与数据库服务器的性能消耗比:通过SQLPLAN来唯一标识多天中运行的SQL,并可以计算出每天每句SQL运行的[schema_name],[object_name],[creation_time],[last_execution_time],[total_phys...

【专利技术属性】
技术研发人员:赵俊
申请(专利权)人:携程计算机技术上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1