使用sqld360进行特定SQL调优分析

 

 

系统性能问题通常是一个综合性的问题,用户对系统的反馈,通常是一个“慢”字。对调优人员,要从网络、应用服务器、数据库服务器等多个层面进行定位,发现瓶颈。如果落实到数据库层面,执行SQL速度慢就是开发运维DBA所需要关注的范畴。

对系统SQL的调优,一般而言不是“一锤子”买卖。而且,性能问题SQL也都遵循“二八原则”,即百分之八十的性能问题,是由百分之二十的SQL语句引起的。所以,每次集中处理两到三个SQL,之后看效果再决定下一步处理的方式,是比较合适的做法。

特定SQL语句调优,是我们进行调优的重点。一个SQL语句,从执行计划、统计量、实际消耗情况、历史执行情况到CBO计算,都需要综合进行考量。如何“一键式”进行相关信息收集,是本篇要解决的问题。sqld360是一个开源数据收集软件,在不安装任何组件的情况下,可以针对一个特定SQL语句进行数据收集,提供进一步分析处理。

 

1、软件下载安装

 

sqld360是一个完全开源软件,可以从官方网站https://github.com/mauropagano/sqld360进行下载。下载介质是一个单独的zip文件。

上传到服务器上,进行解压。

 

 

[root@localhost ~]# cd /

[root@localhost /]# mkdir sql360d

 

[root@localhost /]# cd sql360d/

[root@localhost sql360d]# ls -l

total 188

-rw-r--r--. 1 root root 189858 Jun 17 14:13 sqld360-master.zip

 

 

使用unzip进行解压,之后更改权限。

 

 

[root@localhost sql360d]# unzip sqld360-master.zip

Archive:  sqld360-master.zip

9c19c022a6439ed729335d156a2a332eb129c5a1

   creating: sqld360-master/

  inflating: sqld360-master/README.txt 

   creating: sqld360-master/js/

  inflating: sqld360-master/js/SQLd360_img.jpg 

  (篇幅原因,有省略……)

  inflating: sqld360-master/sql/sqld360_9h_one_org_chart.sql 

  inflating: sqld360-master/sqld360.sql 

[root@localhost sql360d]#

 

[root@localhost sql360d]# cd ..

[root@localhost /]# chown -R oracle:oinstall sql360d/

[root@localhost /]# ls -l | grep sql360d/

[root@localhost /]# ls -l | grep sql360d

drwxr-xr-x.   3 oracle oinstall  4096 Jun 17 14:13 sql360d

 

 

2、执行脚本生成报告包

 

进入sqld360文件夹,执行sqlplus脚本。

 

 

[oracle@localhost ~]$ cd /sql360d/sqld360-master

[oracle@localhost sqld360-master]$ ls -l

total 48

drwxr-xr-x. 2 oracle oinstall  4096 Jun  8 09:14 js

-rwxr-xr-x. 1 oracle oinstall 28942 Jun  8 09:14 license.txt

-rw-r--r--. 1 oracle oinstall  2223 Jun  8 09:14 README.txt

drwxr-xr-x. 2 oracle oinstall  4096 Jun  8 09:14 sql

-rw-r--r--. 1 oracle oinstall  3361 Jun  8 09:14 sqld360.sql

 

 

如果需要分析一个sql语句,首先需要从v$sqlarea或者AWR报告中找到sql_id标示,之后以这个ID作为标示进行报告生成。

 

 

[oracle@localhost sqld360-master]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 17 14:21:27 2015

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL> @sqld360.sql 41hkr3jy35zn6 T

(若干输出)

 

     6579  06-17-2015 14:25   00287_sqld360_sicsdb_41hkr3jy35zn6_5_sql_monitor_reports_sqlmon.zip

    38246  06-17-2015 14:25   00288_sqld360_sicsdb_41hkr3jy35zn6_5_tcb_testcase_tcb.zip

    22621  06-17-2015 14:25   00289_sqld360_sicsdb_41hkr3jy35zn6_5_raw_data.html

    87420  06-17-2015 14:25   00290_sqld360_sicsdb_41hkr3jy35zn6_5_raw_data.txt

    75786  06-17-2015 14:25   00291_sqld360_sicsdb_41hkr3jy35zn6_5_raw_data.csv

    10240  06-17-2015 14:25   00292_sqld360_sicsdb_41hkr3jy35zn6_5_eadam_ash.tar

     7096  06-17-2015 14:25   99999_sqld360_41hkr3jy35zn6_drivers.zip

  1244946  06-17-2015 14:25   00005_sqld360_sicsdb_41hkr3jy35zn6_alert_sicsdb.log

  2519140  06-17-2015 14:25   00003_sqld360_sicsdb_41hkr3jy35zn6_tkprof_sort.txt

      139  06-17-2015 14:25   00000_readme_first.txt

---------                     -------

 27165029                     296 files

 

 

在目录中,会生成压缩包文件。

 

 

[oracle@localhost sqld360-master]$ ls -l

total 1420

drwxr-xr-x. 2 oracle oinstall    4096 Jun  8 09:14 js

-rwxr-xr-x. 1 oracle oinstall   28942 Jun  8 09:14 license.txt

-rw-r--r--. 1 oracle oinstall    2223 Jun  8 09:14 README.txt

drwxr-xr-x. 2 oracle oinstall    4096 Jun  8 09:14 sql

-rw-r--r--. 1 oracle oinstall 1402369 Jun 17 14:25 sqld360_sicsdb_41hkr3jy35zn6_localhost_20150617_1424.zip

-rw-r--r--. 1 oracle oinstall    3361 Jun  8 09:14 sqld360.sql

 

 

3、结果显示

 

加压之后,会发现是一系列html、txt和cvs文件构成的文件包。从其中的readme.txt,可以发现初始文件。

 

 

1. Unzip sqld360_sicsdb_41hkr3jy35zn6_localhost_20150617_1424.zip into a directory

2. Review 00001_sqld360_sicsdb_41hkr3jy35zn6_index.html

 

 

打开index.html文件,可以发现所有分析项目。

 

从上面项目中,可以发现对sqld360对SQL语句的分析维度:

 

ü  数据库配置和SQL语句信息;

ü  执行计划和过程统计量,包括时间历史信息;

ü  对象统计量,基于CBO优化器基础;

ü  SQL性能信息;

ü  各种其他组件工具;

 

下面根据几个主要功能模块截图:

 

数据库信息:

 

SQL子游标执行计划:

 

执行计划分项统计:

 

数据历史统计量信息:

 

4、结论

SQLD360是第三方提供的SQL性能调优小工具,在进行复杂SQL处理或者求助第三方时,是一个不错的选择。

 

 

时间: 2024-11-08 21:42:47

使用sqld360进行特定SQL调优分析的相关文章

SQL 调优1

                                             SQL 调优1 调整的方法调整的工具内存组件调整  shared_pool data_buffer pga IO性能文件确定 调整的方法:调整的流程 架构设计 建模 程序 数据库 硬件调整  每次只调整一个地方 top     消耗资源最多 执行的次数最多 执行的时间最长     达到优化的目标就不优化了     优化的过程中一定不要产生新的性能问题 ----->熟悉别人的生产环境 调整的工具:1   v$

ORACLE SQL调优之'PLAN_TABLE' is old version

  在为国投做SQL调优时,他们开发说不要动现在的SQL,调整一下执行计划即可,即查询某个表时执行特定的执行计划.乍一听,我是吓了一跳!  由于他们开发不让动SQL结构(该SQL经过PLSQL优化后有500多行,其是2层嵌套递归查询,外边一个SQL如图1-2,外层SQL的每一个列是一个子查询如下图1-1,递归子查询有32个),所以只能从SQL涉及的表.索引下手,查找问题的具体原因及解决办法.我的做法是,先查看了SQL涉及的表的统计信息,问题SQL涉及了8张表(最大的表有300M左右,小表只有几M

sql 调优 oracle 执行速度再快一点

问题描述 sql 调优 oracle 执行速度再快一点 select psf.pol_num, psf.bank_acct_num, cba_dda.bank_acct_nm from tbank_pos_slip_files psf, tclient_policy_links cpl_dda, tclient_bank_accounts cba_dda where cpl_dda.cli_num = cba_dda.cli_num and cpl_dda.bank_acct_typ = cba

一条sql语句的建议调优分析

前几天开发的同事问我一个sql的问题,目前在测试环境中发现这条sql语句执行时间很长,希望我们能够给一些建议,能够尽快做一些改进.sql语句类似下面的形式.SELECT /*+ INDEX(ACCOUNT,ACCOUNT_PK)INDEX(ACCOUNT_EXT ACCOUNT_EXT_PK) */ ACCOUNT.ACCOUNT_ID, ACCOUNT.BE, ACCOUNT.CUSTOMER_NO, ACCOUNT.AR_BALANCE, ACCOUNT_EXT.CYCLE_CODE, AC

基于DB time的调优分析

继昨天使用DB time能够快速灵活的定位sql语句之后,发现分析问题更快捷,高效了.今天就牛刀小试,把一个数据库从500%的负载调到不到100%的负载.前提是确实有可提升可改进的空间. 首先查看了在快照57611的时间段里DB time很快,也收到了zabbix的邮件通知, ZABBIX-监控系统: ------------------------------------报警内容: DB time is too high ------------------------------------

SQL调优之列值的集簇因子研究

列值的选择性.集簇和柱状图 切记,优化器了解表中列数据的许多重要特征,最显著的是列值的选择性和列的集簇因子. 例如,以下我们看到一个使用列值来形成结果集的查询: select   customer_name from   customer where   customer_state = 'Rhode Island'; 在此示例中,选择使用索引还是全表扫描受到罗得岛客户比例的影响.如果罗得岛客户的比例非常小 ,并且数值集簇在数据块中,则对于此查询而言索引扫描可能是最快的执行计划. 许多 Orac

STA(SQL Tuning Advisor) SQL调优顾问简介

原文转自:http://blog.csdn.net/tianlesoftware/article/details/5630888 在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包.使用STA一定要保证优化器是CBO模式下. 执行DBMS_SQLTUNE包进行sql优化需要有advis

ORACLE SQL调优案例一则

收到监控告警日志文件(Alert)的作业发出的告警邮件,表空间TEMPSCM2不能扩展临时段,说明临时表空间已经被用完了,TEMPSCM2表空间不够用了 Dear All:     The Instance SCM2' alert log occured the ora errors ,please see the detail blow and take action for it. many thanks! ------------------------------------------

一次SQL调优数据库性能问题后的过程(300W)_MsSql

将绝大部分的SQL查询改为存储过程,这样的操作毫无疑问可以提高部分性能. 凡是使用"select * from xxx"的操作一律具体到所需字段. 使用join连接2个以上大量数据的表,且基础数据表变化不大的查询一律使用视图,并为此视图建立索引.理由来自SQL Server联机帮助手册: "对于标准视图而言,为每个引用视图的查询动态生成结果集的开销很大,特别是对于那些涉及对大量行进行复杂处理(如聚合大量数据或联接许多行)的视图.如果在查询中频繁地引用这类视图,可通过对视图创建