查看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
查询必须在第二步修改配置项的数据库连接上执行。由于正如前文所述,那些配置项只对当前连接生效,若是连接关闭即便重连,配置也再也不生效。浏览器

注:本文转载服务器

相关文章
相关标签/搜索