IQ SQLtrace 功能

扫码查看

IQ 15之前的版本就提供了SQL Trace功能,即通过相应设置后IQ可以把用户发出的SQL语句写入到Server端相应日志文件中;然后可以通过相应工具对这个日志文件进行分析,得到SQL语句执行时间、执行次数等信息;通过分析这些信息,可以找到需要优化的SQL语句。

IQ 15改变了SQL Trace log文件的格式,并且提供了新的存储过程工具sa_get_request_profilesa_get_request_times用于读取日志文件,把SQL语句执行情况的汇总信息和详细信息分别存放在相应的临时表中,satmp_request_profile表用于存放汇总信息,satmp_request_time表用于存放详细信息。用户可以使用标准的select语句对SQL语句执行情况的信息进行灵活的查询和分析。

功能

具有DBA权限的用户执行如下存储过程可以打开SQL Trace功能:

 call sa_server_option('request_level_logging','ALL');

 callsa_server_option('request_level_log_file','sqltrace.log');

注意:使用上述方式打开sql trace之后,形成的sqltrace.log文件与.db文件所在目录相同。sql trace打开之后,所有用户的请求都会记录到日志文件中,如果用户有大量SQL请求,文件会增长较快,需要注意相应文件系统有较多的剩余空间。sqltrace.log文件名和存放的目录位置可以根据需要进行设置:

call sa_server_option('request_level_log_file','/sybiq/trace/mysqltrace.log')

功能

grant execute onsa_get_request_profile to username

grant execute on sa_get_request_timesto username

功能

执行以下命令:

callsa_server_option('request_level_log_file','');

callsa_server_option('request_level_logging','NONE');

抓取的日志

分析的步骤如下:

1、执行存储过程读取SQL Trace log文件

callsa_get_request_profile('sqltrace.log');

call sa_get_request_times('sqltrace.log');

 2、执行select查询,分析语句执行情况

select *  from satmp_request_profile  

where  prefix like '%select%' or prefix like '%from%'

selectstart_time,conn_id,millisecs,stmt  fromsatmp_request_time

where (stmt like '%from%' or stmt like'%FROM%') and  stmt not like '%count(*%'and  stmt not like '%sysobject%'  order by millisecs desc

 

09-01 03:51
查看更多