查看sybase IQ的执行计划
在性能调优工作中,首要的事情是找出性能瓶颈。而针对数据库应用,由于商用数据库对上层应用来说是个黑盒,所以往往需要借助数据库的一些接口或工具来了解数据库的具体行为,并结合相关知识和业务进行调测。
简单来说,数据库在执行一个查询之前,会为该查询生成一个最优(至少它这样认为)的查询计划(Query Plan),然后再根据计划的指示来执行实际的操作和处理。如果能了解到查询计划,也就能知道一个查询真正是怎样执行下来的、时间都耗在哪里、有哪些影响因素等。
第一步:创建报告目录
在正常运行的时候,查询计划是不会显式生成的,但经过后面步骤的配置后,可以指示IQ将每次查询的计划显式生成为文件供开发人员查阅,所以需要预先为其创建一个目录,如:
mkdir /export/home/zyx/ganjd
其中目录可以随意制定,但为了多个开发人员共用服务器的时候不互相影响,应该各自创建自己的目录。该目录应该对运行IQ服务器所使用的帐号有读写权限,最简单就是直接将该目录chmod为777就可以了。
第二步:配置链接选项
就是通过修改数据库的配置项,让IQ在执行查询的时候生成查询计划的报告。一般可以直接在链接了IQ的客户端程序(如Aqua Data Studio或Interactive SQL)上使用下面的语句配置即可:
SET TEMPORARY OPTION QUERY_PLAN_AS_HTML_DIRECTORY ='/export/home/zyx/ganjd';
SET TEMPORARY OPTION QUERY_PLAN = ON;
SET TEMPORARY OPTION QUERY_DETAIL = ON;
SET TEMPORARY OPTION QUERY_TIMING = ON;
SET TEMPORARY OPTION QUERY_PLAN_AFTER_RUN = ON;
SET TEMPORARY OPTION QUERY_PLAN_AS_HTML = ON;
SET TEMPORARY OPTION INDEX_ADVISOR = ON;
SET TEMPORARY OPTION NOEXEC = ON;
需要注意的是,虽然在语法上上述SET OPTION中的TEMPORARY不是必须的,但建议加上,用于指定该选项的修改只对当前链接有效,并且在链接断开后自动恢复。这样就可以避免多个开发人员共用服务器的时候的冲突。
简单说明各个选项的含义:
QUERY_PLAN_AS_HTML_DIRECTORY:指定查询计划报告的存放路径,也就是前面一步所创建的目录即可。
QUERY_PLAN:告诉IQ需要显式生成执行计划供人工查阅。
QUERY_DETAIL:指定在查询计划报告中包含详细信息,建议加上以便得到更详细的信息供调优分析。
QUERY_TIMING:指定收集计时统计信息,否则报告中会缺少时间、耗时的信息,不便于分析性能。
QUERY_PLAN_AFTER_RUN:在执行完查询之后,打印整个查询计划。具体意义不用很考究,打开就是了。
QUERY_PLAN_AS_HTML:查询计划报告用HTML的格式输出,这样就可以通过浏览器查看,很方便。
INDEX_ADVISOR:让IQ给出一个针对该查询的索引优化建议,一般就是IQ认为在某些列上增加某类索引可以提升该查询性能。该建议无法替代人,尤其是结合业务的分析,只作参考,但对存在严重性能问题的查询还是比较有用的。
NOEXEC:ON表示Excute该查询时不会真正执行(也就不会有结果出来),而只生成查询计划;OFF表示该查询会被真正执行,同时输出计划。可以根据实际要求选择,缺省是OFF。而ON对于带修改的查询(例如“update gan_SDR set CI = '0CAB' where ID = 74567”)来说是很方便的,因为这样数据不会被真正修改,可以重复获取查询计划。
第三步:执行查询
就是执行一个查询语句。这里说的“查询”不只限于select,带条件的update、insert和delete都是包含查询处理的,也会得到对应的查询计划。例如:
update gan_SDR set CI = '0CAB' where ID = 74567
查询必须在第二步修改配置项的数据库链接上执行。因为正如前文所述,那些配置项只对当前链接生效,如果链接关闭即使重连,配置也不再生效。
注:本文转载
查看sybase IQ的执行计划的更多相关文章
- oracle中查看sql语句的执行计划
1.在pl/sql中打开cmd命令容器 2.在cmd命令窗口中输入:explain plan for select * from t; 3.查看sql语句的执行计划:select * from tab ...
- 查看带有A-Time的执行计划
先执行 SQL> alter session set statistics_level=all; 会话已更改. 再执行SQL语句: SQL> select count(*) from tb ...
- ORACLE 查看有多个执行计划的SQL语句
在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...
- 查看ORACLE的实际执行计划
ORACLE的执行计划分为预估执行计划和实际执行计划.其中,你用Toad.PL/SQL Developer.SQL Developer.EXPLAIN PLAN FOR或者SET ATUOTRACE ...
- 【Oracle】三种方式查看SQL语句的执行计划
查看执行计划的方式有三种: EXPLAIN PLAN .V$SQL_PLAN .SQL*PLUS AUTOTRACE 1.EXPLAIN PLAN: 显示执行相应语句时可以使用的理论计划 读取执行计划 ...
- MySQL通过Explain查看select语句的执行计划结果触发写操作
[背景] 某某同学执行了一下Explain结果结果发现数据库有了一条写入操作,恭喜这位同学你的锅到货了,你签收一下: 对! 你没有听错,在一种场景下就算是Explain也会引发数据的写操作,就这是外层 ...
- Oracle数据库查看执行计划
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...
- 查看ORACLE执行计划的几种常用方法
SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向. 执行计划的定义:执行目 ...
- 查看oracle的执行计划
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...
随机推荐
- mysql 查询指定数据库中的表明和字段名
SELECT TABLE_NAME,COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_COMMENT LI ...
- Saltstack_使用指南18_API
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Mac打开Finder快捷键
摘要:目前网络中较常见的打开Finder的方法有两种,要么是先进入桌面状态,再使用快捷键command + shift + c:要么是通过下载软件来设置打开Finder的快捷键.都过于繁琐,其实有很简 ...
- FormData的介绍(一)
FormData对象介绍FormData字母意思是表单数据,H5新增的一个内置对象.可以获取任何类型的表单数据,如text radio checkbox file textarea 常用语发送ajax ...
- 在Ubuntu环境下配置Proxmark3(PM3)使用环境
参考资料:PM3官方Wiki 因为国内网络上大多是在Kali系统上使用PM3的教程(链接1.链接2.链接3),而这些教程的步骤对于Ubuntu系统并不完全适用.所以写下本文,记录我个人的安装经历. 本 ...
- eclispe git config配置文件配置远程仓库
git config基本配置如下: [core] repositoryformatversion = 0 filemode = false logallrefupdates = true [remot ...
- DRF--认证和权限
前戏 大家都知道http协议是无状态的,每次发送请求他们怎么知道我们是不是登录过呢?我们可以在用户登录之后给用户一个“暗号”,下次请求的时候带着这个“暗号”来.我们拿自己存的和携带过来的进行对比,如果 ...
- webpack打包优化实践
事情缘由 近段时间在做基于scratch3.0的改造项目.基于scratch-gui改造,项目本身已经很大了,然后里面还要用到scratch-blocks,scratch-vm,scratch-ren ...
- php laravel请求处理管道(装饰者模式)
laravel的中间件使用了装饰者模式.比如,验证维护模式,cookie加密,开启会话等等.这些处理有些在响应前,有些在响应之后,使用装饰者模式动态减少或增加功能,使得框架可扩展性大大增强. 接下来简 ...
- js 根据url 下载图片 前端js 实现文件下载
1.H5 download属性 function downFile(content, filename) { // 创建隐藏的可下载链接 var eleLink = document.createEl ...