功能介绍
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, sqlFROM libra_system.slow_logWHERE duration > 1000ORDER BY duration DESCLIMIT 10;
查询某段时间内执行失败的慢 SQL:
SELECT start_time, user, db, sql, durationFROM libra_system.slow_logWHERE 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_forward、auto_tp、auto_ap、only_tp、only_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 作为过滤条件,可显著提升查询性能。