一种监控SQL语句性能的方法技术

技术编号:10053947 阅读:138 留言:0更新日期:2014-05-16 02:39
本发明专利技术提供一种监控SQL语句性能的方法,属于计算机系统设计领域和数据库领域,利用读取oracle的数据字典以及操作系统级的性能数据来监控相关SQL语句的性能,减少对于图形化界面工具的依赖,该发明专利技术解决了传统图形化管理工具的高成本、难管理的特点,缩短了数据库维护人员的处理时间。

【技术实现步骤摘要】
【专利摘要】本专利技术提供一种监控SQL语句性能的方法,属于计算机系统设计领域和数据库领域,利用读取oracle的数据字典以及操作系统级的性能数据来监控相关SQL语句的性能,减少对于图形化界面工具的依赖,该专利技术解决了传统图形化管理工具的高成本、难管理的特点,缩短了数据库维护人员的处理时间。【专利说明】—种监控SQL语句性能的方法
本专利技术涉及计算机系统设计领域和数据库领域,具体涉及一种监控机构化查询语言(Structured Query Language, SQL) SQL 语句性能的方法。
技术介绍
在当前高速发展的信息时代,IT系统性能问题一直是横亘在技术人员面前一座难以逾越的大山。各种性能优化的方法被不断地探索出来。在各种基于数据库的系统中,为保证语句的查询效率,IT公司纷纷开发了许多技术,从各个方面提供支持。在SQL的优化和调优方面,Oracle的gridcontrol、OEM等工具,以及其他第三方图形化工具都做得比较好。但是这些图形化工具在一些极端情况下,例如数据库没有装资料库或者第三方工具收费,如何监控数据库SQL语句性能成为一个问题。
技术实现思路
此种在字符界面下监控SQL语句性能的方法是通过查询数据字典来获SQL语句的性能指标来监控SQL语句的性能本 本专利技术主要是利用oracle的MMON以及MMNL进程收集的性能数据作为源数据,通过对源数据不同层面的分析得出相应的sql性能数据,根据定义的阀值来给相关人员发送预警邮件或者短信,从而提高工作效率。本专利技术的设计方法是当某个测量值(metrics)超过了预设的限定值(threshold value)后提交警告,并创建新的MMON隶属进程(ΜΜ0Ν slaveprocess)来进行快照(snapshot),捕获最近修改过的SQL对象的统计信息,而对于轻量级的且频率较高的和可管理性相关各种任务交给MMNL进程来完成,这2个进程将获得数据写入到WRM$_*和WRH$_*开头的表中,通过读取这些表中的数据来获得相应sql的基本信息-包括sql的执行次数、执行时间、变量值、cpu消耗、io消耗、内存消耗以及各种的等待事件,通过对这些基本指标的监控类来达到监控sql语句性能的目的。该设计结构包括=Oracle后台进程模块(I)、问题进程模块(2)、问题sql模块(3)、问题sql资源消耗以及执行计划模块(4)、接口模块(5); oracle后台进程模块,后台进程模块是集成在oracle内部,有oracle自动来维护,负责来收集客户端发出的sql语句的相关数据,并根据相关定义来定时运行; 问题进程模块,通过系统级别定位到问题进程,主要是通过对系统资源的监控包括对cpu的消耗、io的消耗、内存的使用、文件打开数、打开的进程数等资源来得到问题进程;问题sql模块,通过进程模块获得问题进程的id,然后通过字典视图获得该进程执行的sql_id,通过sql_id可以获得该进程执行的sql语句文本; 问题sql资源消耗以及执行计划模块,通过sql模块获得sql_id来得到sql语句的执行计划,然后通过分析该执行计划得到该这个sql语句最消耗资源的原因; 接口模块,通过对邮件或者短信系统接口的调用将问题sql发送给相关维护人员,以便及早发现问题。本专利技术的有益效果是:通过在出现性能问题时段MMON以及MMNL进程收集的性能数据为依据,先找到最消耗资源的进程,其中包括最消耗CPU、最消耗内存、最消耗io、执行次数最多、硬解析最多、version过多、consistent read过多、segment最大等,通过找到该进程的id来获得该进程执行的sql语句,然后通过autotrace、explain、dbms等方法获得该sql语句的执行计划。通过对sql语句执行计划的解读来获得该sql语句主要消耗的资源以及他的等待事件,比如发现该语句的io消耗最大,查看他的执行计划的时候发现是在一个大表的全表扫描、那么就应该考虑是否应该在相应的字段上增加索引、是否需要分区、是否需要建立全局或者是本地索引、是否需要对大表的一些历史数据进行清理、是否这个sql语句需要进行调整等来避免全表扫描,通过对相应的语句进行调整从而使得这类建议更加自动化的提示给管理人员,而且因为是通过sql语句进行相应资源的查询,这样更容易实现定制化,可以根据自己的需要在出现问题是发出相应的警告,而且sql语句的接口是标准化的减少了开发的工作量。这种字符界面下监控sql语句的方法具有上述优点,使其弥补了在无图形界面的情况下无法监控sql语句性能的不足,大大提高了 DBA的工作效率与工作质量,减轻了 DBA日常维护的工作量,提高了 DBA对问题的相应速度跟时间,而且由于可定制化使得该方法在无法使用图形化的情况下有很高的技术价值。【专利附图】【附图说明】附图1为本专利技术的逻辑结构图。【具体实施方式】下面参照附图,对本专利技术的内容以监控单个sql性能为例,描述这一结构的实现过程。正如
技术实现思路
中所描述的,本专利技术的逻辑实现结构设计方法主要包括=Oracle后台进程模块(I)、问题进程模块(2)、问题sql模块(3)、问题sql资源消耗以及执行计划模块(4)、接口模块(5)。一种监控SQL语句性能的方法的逻辑结构包括,oracle后台进程模块负责收集sql语句的相关信息,包括在规定时间内相关sql语句的执行次数,执行时间,解析次数,子游标数等,然后将这些数据存放在相应的字典表中,为后续的监控提供最原始的数据;问题进程模块根据进程资源消耗(包括进程消耗的cpu、内存、打开文件数、语柄数、io)的情况来判断该进程是否是问题进程,从而决定是否将该进程id发送给sql模块,该模块从系统级来判断,这从2个层面进行性能监控从而获得全面、完整的性能数据,如果有多个进程消耗资源达到了阀值线,那么可以根据关心的指标进行排序得到资源消耗进程列表;问题sql模块根据进程模块提供的进程id号来获取该进程的sql_id,然后根据该sql_id来获取该进程执行的sql文本,根据数据字典信息可以获得该sql语句的变量值从而判断是否是因为直方图或者是绑定变量窥测造成的问题,给开发人员跟维护人员一个可读的结果;问题sql资源消耗以及执行计划模块,通过sql模块提供的sql_id来获取该sql的执行计划以及获取该sql对资源的消耗情况,从而得到该sql到底在哪一步最消耗资源,进而判断该sql的执行计划是否正确;接口模块,通过邮件系统或者是短信系统将该进程执行的sql文本、资源消耗以及执行计划发送给相关人员从而让相关人员及时得到相关信息,提高处理问题的相应时间。【权利要求】1.一种监控SQL语句性能的方法,其特征在于该设计结构包括=Oracle后台进程模块(I)、问题进程模块(2)、问题sql模块(3)、问题sql资源消耗以及执行计划模块(4)、接口模块(5); oracle后台进程模块,后台进程模块是集成在oracle内部,有oracle自动来维护,负责来收集客户端发出的sql语句的相关数据,并根据相关定义来定时运行; 问题进程模块,通过系统级别定位到问题进程,主要是通过对系统资源的监控包括对cpu的消耗、io的消耗、内存的使用、文本文档来自技高网
...

【技术保护点】
一种监控SQL语句性能的方法,其特征在于该设计结构包括:oracle后台进程模块(1)、问题进程模块(2)、问题sql模块(3)、问题sql资源消耗以及执行计划模块(4)、接口模块(5);oracle后台进程模块,后台进程模块是集成在oracle内部,有oracle自动来维护,负责来收集客户端发出的sql语句的相关数据,并根据相关定义来定时运行;问题进程模块,通过系统级别定位到问题进程,主要是通过对系统资源的监控包括对cpu的消耗、io的消耗、内存的使用、文件打开数、打开的进程数等资源来得到问题进程;问题sql模块,通过进程模块获得问题进程的id,然后通过字典视图获得该进程执行的sql_id,通过sql_id可以获得该进程执行的sql语句文本;问题sql资源消耗以及执行计划模块,通过sql模块获得sql_id来得到sql语句的执行计划,然后通过分析该执行计划得到该这个sql语句最消耗资源的原因;接口模块,通过对邮件或者短信系统接口的调用将问题sql发送给相关维护人员,以便及早发现问题。

【技术特征摘要】

【专利技术属性】
技术研发人员:初贤哲
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:山东;37

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

1