在性能调优工作中,首要的事情是找出性能瓶颈。而针对数据库应用,由于商用数据库对上层应用来说是个黑盒,所以往往需要借助数据库的一些接口或工具来了解数据库的具体行为,并结合相关知识和业务进行调测。
    简单来说,数据库在执行一个查询之前,会为该查询生成一个最优(至少它这样认为)的查询计划(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的执行计划的更多相关文章

  1. oracle中查看sql语句的执行计划

    1.在pl/sql中打开cmd命令容器 2.在cmd命令窗口中输入:explain plan for select * from t; 3.查看sql语句的执行计划:select * from tab ...

  2. 查看带有A-Time的执行计划

    先执行 SQL> alter session set statistics_level=all; 会话已更改. 再执行SQL语句: SQL> select count(*) from tb ...

  3. ORACLE 查看有多个执行计划的SQL语句

    在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...

  4. 查看ORACLE的实际执行计划

    ORACLE的执行计划分为预估执行计划和实际执行计划.其中,你用Toad.PL/SQL Developer.SQL Developer.EXPLAIN PLAN FOR或者SET ATUOTRACE ...

  5. 【Oracle】三种方式查看SQL语句的执行计划

    查看执行计划的方式有三种: EXPLAIN PLAN .V$SQL_PLAN .SQL*PLUS AUTOTRACE 1.EXPLAIN PLAN: 显示执行相应语句时可以使用的理论计划 读取执行计划 ...

  6. MySQL通过Explain查看select语句的执行计划结果触发写操作

    [背景] 某某同学执行了一下Explain结果结果发现数据库有了一条写入操作,恭喜这位同学你的锅到货了,你签收一下: 对! 你没有听错,在一种场景下就算是Explain也会引发数据的写操作,就这是外层 ...

  7. Oracle数据库查看执行计划

    基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...

  8. 查看ORACLE执行计划的几种常用方法

    SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向. 执行计划的定义:执行目 ...

  9. 查看oracle的执行计划

    基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...

随机推荐

  1. Under what conditions should the 'start_udev' command be run?

    环境 Red Hat Enterprise Linux 问题 We run start_udev as part of the storage allocation procedure that we ...

  2. 安装 openmpi 4.0 用于 horovod 编译

    最近编译 horovod框架过程中,需要使用openmpi 4.0但是环境中的openmpi版本比较低,所以在手动安装openmpi4.0 用于编译,下面对过程进行简要记录,进行备忘: curl -O ...

  3. Tornado之接口调用时方式执行顺序

    Tornado之接口调用顺序 initialize() 作用:做一些初始化操作 prepare() 作用:预处理方法,在执行对应的请求方法之前调用 注意:任何一种HTTP请求,都会执行prepare方 ...

  4. java8-02-再探Lambda表达式

    Lambda表达式   主要作用替代匿名内部类   达到简化代码的操作                                  Lambda表达式 在对象中的使用   Employee类

  5. deepin系统右键刷新-解决增删改文件没有变化

    deepin 新建/删除/修改-->文件/文件夹后 目录不刷新解决方案 方法1: F5键刷新 方法2: 通过修改配置文件-->调整最大文件监控数量(建议使用这种方式) sudo vim / ...

  6. class与class的继承

    class Point{ constructor(x,y){ this.x = x; this.y = y; } toString(){ return '(' + this.x + ',' + thi ...

  7. rabbit mq 手动重试机制

    消息手动确认模式的几点说明 监听的方法内部必须使用channel进行消息确认,包括消费成功或消费失败 如果不手动确认,也不抛出异常,消息不会自动重新推送(包括其他消费者),因为对于rabbitmq来说 ...

  8. MQ的幂等性和解决方案

    1.幂等性 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.通俗的讲就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错:类似于数据库中的乐 ...

  9. IDEA2019 Maven项目出现Unable to import maven project: See logs for details解决办法

    问题1:Unable to import maven project: See logs for details 网上说,原因是IDEA2019和Maven3.6.2不兼容导致的,需要把Maven降级 ...

  10. 使用composer安装Larave提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Composer”

    解决办法: 根据官方手册执行composer global require "laravel/installer" 显示Changed current directory to C ...