Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209246
  • 博文数量: 28
  • 博客积分: 128
  • 博客等级: 民兵
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-19 13:05
个人简介

生活的内容不全是工作,工作只是生活的一部分;享受生活,热爱工作!

文章分类
文章存档

2015年(1)

2014年(23)

2011年(4)

分类: Sybase

2014-11-17 18:13:28

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');

 call sa_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 on sa_get_request_profile to username

grant execute on sa_get_request_times to username

功能

执行以下命令:

call sa_server_option('request_level_log_file','');

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

抓取的日志

分析的步骤如下:

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

call sa_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%'

select start_time,conn_id,millisecs,stmt  from satmp_request_time

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

 

阅读(2627) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~