SLOW_LOG

最近更新时间:2026-06-30 16:45:30

我的收藏

功能介绍

SLOW_LOG 是列存只读分析实例记录慢 SQL 的系统表,位于系统库 libra_system 中。当 SQL 语句的执行时间超过阈值(默认300毫秒)时,将被记录到此系统表。系统默认保留7天内的慢 SQL 执行信息,超过保留期限的数据会被自动清理。
通过查询该表,您可以分析列存只读分析实例中执行较慢的 SQL,定位性能瓶颈和异常查询。

使用限制

用户查询 libra_system.slow_log 时,系统会自动过滤掉内部用户(libra@%)产生的慢 SQL 记录,仅返回业务用户的查询信息。
系统内部 SQL(如统计信息收集、元数据维护等)不会被记录到该表。
失败的 SQL(执行报错)也会被记录,可通过 succ 字段进行筛选。

慢查询阈值

慢 SQL 的判定阈值由系统变量 libra_slow_log_threshold 控制。
名称
含义
类型
默认值
取值范围
单位
libra_slow_log_threshold
慢 SQL 判定阈值
Integer
300
-1 ~ 9223372036854775807
毫秒
修改阈值示例:
SET GLOBAL libra_slow_log_threshold = 500;
说明:
当取值为 -1 时,表示不记录任何慢 SQL。修改后立即生效,无需重启服务。

SQL 文本长度限制

写入 sql 列的 SQL 文本最大长度由系统变量 libra_query_log_max_len 控制,超过该长度时 SQL 文本会被截断。
名称
含义
类型
默认值
取值范围
单位
libra_query_log_max_len
慢 SQL 文本最大长度
Integer
4194304
0 ~ 1073741824
字节
默认值 4194304 字节即 4 MB。

查询示例

查询所有慢 SQL:
SELECT * FROM libra_system.slow_log;
查询执行时间超过1秒的慢 SQL:
SELECT start_time, user, db, duration, sql
FROM libra_system.slow_log
WHERE duration > 1000
ORDER BY duration DESC
LIMIT 10;
查询某段时间内执行失败的慢 SQL:
SELECT start_time, user, db, sql, duration
FROM libra_system.slow_log
WHERE event_date = '2026-05-13'
AND succ = 0;

字段说明

字段名称
类型
是否可以为 NULL
描述
event_date
date
NO
慢 SQL 发生日期,按日期分区,用于加速时间范围过滤。
start_time
text
NO
SQL 开始执行时间,格式为 YYYY-MM-DD HH:MM:SS.ffff,精确到 0.1毫秒。
tso
bigint(20) unsigned
NO
SQL 关联的事务时间戳,可作为查询的全局有序标识。
sql
text
NO
SQL 文本信息。最大长度由 libra_query_log_max_len 控制(默认 4 MB),超过将被截断。
duration
bigint(20) unsigned
NO
SQL 的执行时间,单位为毫秒。
details
text
NO
SQL 执行详细信息,预留字段,当前为空字符串。
conn_id
bigint(20) unsigned
NO
客户端连接的 Session ID。
user
text
NO
执行该 SQL 的用户名,格式为 user@host
db
text
NO
执行 SQL 时所在的数据库名。
digest
text
NO
SQL 归一化后的指纹,相同模式的 SQL 拥有相同的 Digest,可用于聚合分析。
succ
tinyint(3) unsigned
NO
SQL 是否执行成功。取值:0 表示失败,1 表示成功。
host
text
NO
实际执行该 SQL 的 Libra 存储节点地址,格式为 IP:Port
execution_mode
text
NO
SQL 的执行模式。取值:no_forwardauto_tpauto_aponly_tponly_ap。详见下方说明。
normalized_sql
text
NO
参数化(归一化)后的 SQL 文本,可用于 SQL 模式聚合。

execution_mode 取值说明

取值
说明
no_forward
自动路由关闭,SQL 在 Libra 上执行。
auto_tp
自动路由开启,根据代价估算路由到 TDSQL 执行。
auto_ap
自动路由开启,根据代价估算路由到 Libra 执行。
only_tp
强制路由到 TDSQL 执行。
only_ap
强制路由到 Libra 执行。
说明:
event_date 是该表的分区字段,按 tso 排序。在查询时优先使用 event_date 作为过滤条件,可显著提升查询性能。