慢sql跟踪¶
慢sql语句跟踪提供运行时sql执行大于指定时间的相关信息,记录在慢sql转储文件中。
转储文件主要记录sql语句、执行计划、执行总时间、执行开始时间、事务开始时间、事务日志大小、用户名等语句信息。
转储文件存放在神通数据库安装目录的 log 目录下,并以数据库实例名来分别存放。转储文件的名字以 sql_trace_日期_时间.txt命名,如 《sql_trace_20231206_144631.txt》。
配置参数¶
慢sql跟踪的相关配置参数有 MIN_SQL_TRACE_TIME 、 SQL_TRACE_TSQL_TEXT。
MIN_SQL_TRACE_TIME
线程级动态参数,单位毫秒,用于指定慢sql跟踪的执行时间下限,默认为0,最大值为1000000。当该参数为0时不跟踪任何语句。可以在配置文件或者超级用户用sql语句设置。当值不为0时,作用会话中超过该执行时间且满足 SQL_TRACE_TSQL_TEXT 条件的语句都会被记录到转储文件中。
SQL_TRACE_TSQL_TEXT
线程级动态参数,字符串,用于指定慢sql跟踪的关键词,默认为空。可以在配置文件或者超级用户用sql语句设置。当该参数为空时转储所有执行时间大于 MIN_SQL_TRACE_TIME 的语句,否则只转储包含参数中指定关键词的语句。关键词以逗号分隔,大小写不敏感,可设置关键词上限为5个,若设置超过上限则会报notice,并只截取前5个。
注解
使用sql语句设置慢sql跟踪相关参数时,当前会话设置后,在之后创建的会话中生效。
设置关键词时注意配置文件和sql语句使用不同的转义字符,配置文件中使用"'",sql语句中使用"''"
示例:
--session 1 设置 MIN_SQL_TRACE_TIME,未设置 SQL_TRACE_TSQL_TEXT
set min_sql_trace_time=1;
--session 2 中执行语句,超过1ms的都会转储到 sql_trace.txt 中,例如:
DBName:OSRDB , Session:2 , User:SYSDBA , Start Time:2023-10-16 15:01:04 , Total Time:117ms ,Transaction Start Time: , Log Size:-1 , 'create table tab1(a int,b int)', NULL);
--session 2 设置 SQL_TRACE_TSQL_TEXT
set SQL_TRACE_TSQL_TEXT='"a=12",tab2,relname=''TAB2'',t1,t2,t3,t4';
--session 3 中执行语句,超过1ms且包含a=12、tab2、relname='TAB2'、t1的都会转储
create table t1(a int); --转储
create table t2(a int); --不转储