什么是 SQLLOG
SQLLOG 是达梦数据库的 SQL 执行日志功能,用于记录数据库中执行的所有 SQL 语句及其执行信息。它类似于 MySQL 的慢查询日志(Slow Query Log)或 Oracle 的 SQL Trace 功能。
SQLLOG 记录的内容
|---------|---------------|
| 字段 | 说明 |
| SQL 语句 | 完整执行的 SQL 文本 |
| 执行时间SQL | 从开始到结束的耗时(毫秒) |
| 执行用户 | 发起 SQL 的数据库用户 |
| 执行时间戳 | SQL 执行的具体时间 |
| 返回行数 | SQL 查询或影响的记录数 |
| 执行状态 | 成功/失败及错误信息 |
SQLLOG 的主要作用
性能分析 - 识别执行缓慢的 SQL 语句
问题排查 - 追踪数据库异常操作的来源
审计合规 - 记录敏感数据的访问历史
优化依据 - 为索引创建、SQL 改写提供数据支撑
容量规划 - 分析高频 SQL,评估系统负载
SQLLOG 配置
查看当前 SQLLOG 配置
sql
SELECT * FROM V$PARAMETER WHERE NAME LIKE '%SVR_LOG%';
配置sqllog.ini
sql
# cat 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 = ../log
PART_STOR = 0
SWITCH_MODE = 1
SWITCH_LIMIT = 100000
ASYNC_FLUSH = 0
FILE_NUM = 200
ITEMS = 0
SQL_TRACE_MASK = 2:3:23:24:25
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
核心配置参数
|----------------|--------------------------------|
| 参数名 | 说明 |
| SQL_TRACE_MASK | 1 全部记录(全部记录并不包含原始语句) |
| MIN_EXEC_TIME | 记录最小执行时间(ms)01000(1 秒) |
| FILE_NUM | 日志文件数量 |
| FILE_PATH | 日志文件所在的文件夹路径 |
| BUF_SIZE | 一块 SQL 日志 BUFFER 的空间大小,单位为 KB |
| ASYNC_FLUSH | 是否打开异步 SQL 日志功能。 0:表示关闭 1:表示打开 |
开启 SQLLOG
sql
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
配置sqllog.ini文件
在数据库实例目录下创建sqllog.ini配置文件
bash
vim 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 = ../log
PART_STOR = 0
SWITCH_MODE = 1
SWITCH_LIMIT = 100000
ASYNC_FLUSH = 0
FILE_NUM = 200
ITEMS = 0
SQL_TRACE_MASK = 2:3:23:24:25
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
sqllog.ini 文件配置成功后可在 dmsql 指定目录下生成 dmsql 开头的 log 日志文件,里面记录详细的SQL信息,可找到对应的慢SQL进行优化。
