查看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不是必须的, 但建议加上,用于指定该选项的修改只对当前链接有效,并且在链接断开后自动恢复。这样就可以避免多个开发人员共用服务器的时候的冲突。
作者“lzz7658823”