Oracle数据库中最常用的SQL语句

发表于:2011-9-28 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  对SQL语句进行调整,往往有一项前期工作,就是定位最常用的SQL 语句。Oracle数据库可以从多个方面取得SQL语句。如从数据库自身的存储过程或者函数中取得,也可以从前台的应用程序中取得。所以,数据库管理员必须学会如何从数据库当前程序库缓存中对已经存在的SQL语句进行采样。了解当前使用最频繁的SQL语句以及其对应的资源消耗情况。只有如此,数据库管理员才能够对症下药,解决SQL语句执行效率不高的问题。

  在Oracle数据库中有多种方法可以帮助数据库管理员定位常用的SQL语句。笔者在这里介绍比较常用的两种方法。

  一、查询系统表sys.wrh$_sqlsta。

  在数据库系统中有如下一张表。这张表存储中Oracle数据库执行过的SQL语句的相关情况。

  如上面这张表中,他会反映某个特定Sql语句的执行信息。其中第一个参数Excutions_Total参数纪录了某条SQL语句总共执行的次数。而第二个参数Disk-Reads-Totali参数则统计了从磁盘中读取数据的次数。当SQL语句的执行次数特别多而且又是多次从磁盘中读取数据的话,那么数据库管理员就要注意了。因为从磁盘中读取数据要比从内存中读取数据慢的多。此时,若数据库管理员能够想方设法,让这些执行频率高的SQL语句不直接从磁盘中读取数据,而是从内存中读取数据,那么就可以非常有效的提高SQL语句的执行效率。

  另外数据库可以员也可以通过Statspack方法来定位SQL语句。当我们启用这个功能的时候,数据库会生成一张Stats$Sql_summary的表。他的功能跟上面这张表类似,只是他会有选择的纪录相关的信息。

  在Sql_Parameter会记入相关的条件。如当SQL语句执行次数大于多少才进行纪录;又或者当SQL语句执行磁盘读取次数大于多少时进行统计等等。通过这个过滤,会让数据库管理员了解更多的信息。但是,这里要注意一个问题,当任何一个指标超出(Oracle官方资料上把这个指标叫做阀值)的时候,系统就会往上面这个表中添加一条纪录。所以如果这个指标设置的比较低,当数据库比较繁忙的时候,我们会发现这张表会变得非常的活跃。数据库会时不时的向这张表中添加纪录。

  所以,如果数据库管理员想用这种方法来定位SQL语句的话,那么需要同时做好两项工作。

  一是需要根据SQL调整过程来随时调整这个指标。当我们数据库管理员需要对SQL语句进行调整的时候,就必须要降低指标值。如此才能够定位那些不常用的SQL语句,并对其进行调整。但是,降低指标值会导致数据库向这个表中添加更多的纪录。此时,数据库管理员在调整过后,就要手工删除这表中多余的数据。

  二是要定期的查看这表中的内容。因为随着系统应用时机的不同,有些SQL语句可能在某个时段后不再使用。所以,如果SQL调整不再使用这些内容的话,则数据库管理员从这张表中删除他们就显得非常的必要了。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号