二、 SQL优化
1. 定位慢的SQL
要分析性能瓶颈,首先得把执行的又慢、又多的SQL语句找出来,DM提供了SQL日志的功能,可以将系统中运行的SQL语句、语句绑定的参数、SQL执行时间记录到SQL日志文件中,并提供参数来进行过滤,比如只更新select语句、DELETE语句、update语句、报错的语句等等。
1) 修改dm.ini文件
SVR_LOG = 1 SVR_LOG_FILE_NUM =2 SQL_TRACE_MASK = 1 SVR_LOG_SWITCH_COUNT = 1000000
#SVR_LOG:1表示开启SQL日志功能,0表示关闭
#SVR_LOG_FILE_NUM:1表示不切换,2表示记录两个日志文件,互相切换
#SQL_LOG_MASK:要记录的语句类型掩码,1表示全部记录
4:7表示记录update和select语句
#SVR_LOG_SWITCH_COUN:每个SQL日志文件中记录的消息条数
#修改完成后需要重启数据库服务
2) 执行系统存储过程开启
--开启SQL日志,记录所有的SQL语句,两个文件互相切换
--每个文件记录100万行
--动态修改INI参数,无需重启服务
call sp_set_para_value(1,'SVR_LOG',1); call sp_set_para_value(1,'SVR_LOG_FILE_NUM',2); call sp_set_para_value(1,'SQL_LOG_MASK',1); call sp_set_para_value(1,'SVR_LOG_SWITCH_COUNT',1000000);
通过上面两种方法,我们成功开启了SQL日志功能,那么如何从这些日志文件中找到性能瓶颈呢?给大家提供一个SQL日志分析小工具(http://bbs.dameng.com/forum.php?mod=viewthread&tid=44187&extra=page=1)
该工具运行效果图如下:
分析完成后,会在分析程序所在目录生成一个文件夹,保存分析结果:
详细的分析结果保存到一个excel文件中