达梦数据库获取慢sql

在数据库优化中sql优化是很重要的一部分,那么如何有效的获取慢sql
一、通过历史执行sql记录
当 INI 参数 ENABLE_MONITOR=1、MONITOR_TIME=1 打开时,显示系统最近 1000 条执行时间超过预定值的 SQL 语句。默认预定值为 1000 毫秒。可通过 SP_SET_LONG_TIME 系统函数修改,通过 SF_GET_LONG_TIME 系统函数查看当前值。
--两个参数均为动态参数,可直接调用系统函数进行修改
SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
SP_SET_PARA_VALUE(1,'MONITOR_TIME',1);

注意:通过 SP_SET_PARA_VALUE 方式修改的参数值仅对当前会话以及新建会话生效,对其它已建立会话不生效。
确定高负载的SQL
在设置性能监视级别为大于0后,可以通过查询动态视图V$LONG_EXEC_SQL或 V$SYSTEM_LONG_EXEC_SQLS来确定高负载的SQL语句。前者显示最近1000条执行时间 较长的SQL语句,,后者显示服务器启动以来执行时间最长语句。例如:
select * from V$LONG_EXEC_SQLS;
或者
select * fromV$SYSTEM_LONG_EXEC_SQLS order by exec_time desc;
select * from v$sql_history order by time_used desc
二、通过log_commit日志
1、设置开启日志
--设置SQL过滤规则,只记录必要的SQL,生产环境不要设成1
--2 只记录DML语句3 只记录DDL语句22 记录绑定参数的语句
--25 记录SQL语句和它的执行时间28 记录SQL语句绑定的参数信息
SF_SET_SYSTEM_PARA_VALUE('SQL_TRACE_MASK','2:3:5:22:25:28',0,1);
--同步日志会严重影响系统效率,生产环境必须设置为异步日志
SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_ASYNC_FLUSH',1,0,1);
--下面这个语句设置只记录执行时间超过200ms的语句
SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_MIN_EXEC_TIME',200,0,1);
select PARA_NAME,PARA_VALUE from v$dm_ini where para_name in('SQL_TRACE_MASK','SVR_LOG_ASYNC_FLUSH','SVR_LOG_MIN_EXEC_TIME')
--开启SQL日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);
--关闭SQL日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);
2、生成sql日志
日志默认路径是log/dmsql_'sid'.log
日志是不断累加的,过期无用的sql日志可以删除文件,可截取某时间段的日志。
sql.log日志的配置文件/data/DAMENG/sqllog.ini
sqllog.ini
BUF_TOTAL_SIZE= 10240#SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE= 1024#SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT= 6#SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH= /dmdata/data/log#sqllog存放位置
PART_STOR= 0
SWITCH_MODE= 2#0代表不切换2代表按照文件大小切换
SWITCH_LIMIT= 256#文件大小256M
ASYNC_FLUSH= 1#异步刷日志
FILE_NUM = 10#生成的SQLLOG个数
ITEMS= 0
SQL_TRACE_MASK= 1#全部类型的sql
MIN_EXEC_TIME = 0
USER_MODE= 0#0为记录所有的用户
USERS =
如果对 sqllog.ini 进行了修改,可通过调用以下函数即时生效,无需重启数据库,如下所示:
SP_REFRESH_SVR_LOG_CONFIG();
3、获取日志分析
用java执行jar包分析日志文件
到jar包的目录
Dmlog_DM7_6.0.jar
Dmlog_DM7_5.1.jar
命令行:
java.exe -jar Dmlog_DM7_5.1.jar(可以在电脑自己安装jdk,也可以dm自带的jdk)
达梦数据库获取慢sql
文章图片

【达梦数据库获取慢sql】可以在用本机的数据库分析,也可以远程,数据库的页大小和块大小为32不然会报错:记录超长

文件夹的路径,要单独为分析日志设置文件夹,因为会分析文件夹内所有文件,可以多个日志,可以带入参数
生成的文件在当前目录
达梦数据库获取慢sql
文章图片
达梦数据库获取慢sql
文章图片

三、用DM自带的monitor工具.../tool/目录下
达梦数据库获取慢sql
文章图片


    推荐阅读