LOGSERVICE_MEMORY_STAT

最近更新时间:2026-06-29 09:51:40

我的收藏

功能

INFORMATION_SCHEMA.LOGSERVICE_MEMORY_STAT 用于展示 集群中所有 LogService(MySQLClient 模式)的内存占用统计,包括 LogService 全局内存使用情况、单个 Replication Group(以下简称 RG)的内存占用,以及内存超限时的落盘缓存使用情况。视图同时暴露当前生效的内存配额、限流阈值和限流原因,便于诊断 MysqlClient 模式下消费链路的内存压力与下推阻塞问题。
视图按行展示统计粒度,由 STAT_TYPE 列区分:
GLOBAL:以 LogService 为单位的全局统计,每个 LogService 输出一行。
RG:以 RG 为单位的统计,每个 LogService 下每个活跃 RG 输出一行。
内存按 三个层次 分层统计,对应 MySQLClient 消费链路上消息流转的三个阶段:
BinlogHandler 层:解析 Binlog 后产生的消息所占用的内存。
ConflictDetector 层:等待按 commit_ts 排序合并的消息所占用的内存。
MysqlQueue 层:已分发到 MySQL 执行队列、待执行 SQL 的消息所占用的内存。

字段说明

字段名
类型
描述
STAT_TYPE
VARCHAR(16)
统计粒度。取值为 GLOBAL(LogService 全局统计)或 RG(单个 RG 统计)。
SID
BIGINT UNSIGNED
LogService 实例编号。
RG_ID
BIGINT UNSIGNED
Replication Group 编号。STAT_TYPE='RG' 时有效;STAT_TYPE='GLOBAL' 时为 NULL
TOTAL_MEM_BYTES
BIGINT UNSIGNED
当前已使用的内存总量,单位为字节。STAT_TYPE='GLOBAL' 时为整个 LogService 的总占用,STAT_TYPE='RG' 时为该 RG 在三层中的占用之和。
BINLOG_HANDLER_MEM_BYTES
BIGINT UNSIGNED
BinlogHandler 层的内存占用,单位为字节。
CONFLICT_DETECTOR_MEM_BYTES
BIGINT UNSIGNED
ConflictDetector 层的内存占用,单位为字节。
MYSQL_QUEUE_MEM_BYTES
BIGINT UNSIGNED
MysqlQueue 层的内存占用,单位为字节。
SOFT_LIMIT_BYTES
BIGINT UNSIGNED
LogService 全局内存软限制,单位为字节。占用达到该值时,非全局最小 commit_ts 的 RG 触发限流。仅 STAT_TYPE='GLOBAL' 时有效,否则为 NULL。该值由系统变量 binlog_mysqlclient_cache_max_size 控制。
HARD_LIMIT_BYTES
BIGINT UNSIGNED
LogService 全局内存硬上限,单位为字节。超过该值时输出告警日志,但仍允许全局最小 commit_ts 的 RG 继续分配,避免下推链路卡住。仅 STAT_TYPE='GLOBAL' 时有效,否则为 NULL。该值由系统变量 binlog_mysqlclient_cache_hard_limit_ratioSOFT_LIMIT_BYTES 共同决定。
PER_RG_LIMIT_BYTES
BIGINT UNSIGNED
单个 RG 的内存配额,单位为字节。仅 STAT_TYPE='GLOBAL' 时有效,否则为 NULL。该值由系统变量 log_service_per_rg_mem_limit 控制。
COMMIT_TS
BIGINT UNSIGNED
RG 当前的提交时间戳。仅 STAT_TYPE='RG' 时有效,否则为 NULL
IS_MIN_TS_RG
SMALLINT
是否为当前 LogService 内全局最小 commit_ts 的 RG。1 表示是,0 表示否。最小 commit_ts 的 RG 在内存超限时可以继续分配内存,避免阻塞全局下推。仅 STAT_TYPE='RG' 时有效,否则为 NULL
BLOCK_REASON
VARCHAR(256)
RG 当前被限流的原因描述。空字符串或 NULL 表示未被限流。仅 STAT_TYPE='RG' 时有效。
FLUSH_DISK_WRITE_COUNT
BIGINT UNSIGNED
内存数据落盘的累计次数。
FLUSH_DISK_WRITE_BYTES
BIGINT UNSIGNED
内存数据落盘的累计字节数。
FLUSH_DISK_READ_COUNT
BIGINT UNSIGNED
从落盘缓存读回内存的累计次数。
FLUSH_DISK_READ_BYTES
BIGINT UNSIGNED
从落盘缓存读回内存的累计字节数。
FLUSH_DISK_ON_DISK_BYTES
BIGINT UNSIGNED
当前仍驻留在落盘缓存中的数据量估算值,单位为字节。等于 FLUSH_DISK_WRITE_BYTES - FLUSH_DISK_READ_BYTES,下限为0。
DISK_SOFT_LIMIT_BYTES
BIGINT UNSIGNED
落盘缓存的全局软限制,单位为字节。仅 STAT_TYPE='GLOBAL' 时有效,否则为 NULL
PER_RG_DISK_LIMIT_BYTES
BIGINT UNSIGNED
单个 RG 的落盘缓存配额,单位为字节。仅 STAT_TYPE='GLOBAL' 时有效,否则为 NULL

示例

查询某个 LogService 的全局内存使用情况:
tdsql > select * from information_schema.logservice_memory_stat where stat_type='GLOBAL'\\G
*************************** 1. row ***************************
STAT_TYPE: GLOBAL
SID: 1001
RG_ID: NULL
TOTAL_MEM_BYTES: 268435456
BINLOG_HANDLER_MEM_BYTES: 33554432
CONFLICT_DETECTOR_MEM_BYTES: 167772160
MYSQL_QUEUE_MEM_BYTES: 67108864
SOFT_LIMIT_BYTES: 1073741824
HARD_LIMIT_BYTES: 2147483648
PER_RG_LIMIT_BYTES: 104857600
COMMIT_TS: NULL
IS_MIN_TS_RG: NULL
BLOCK_REASON: NULL
FLUSH_DISK_WRITE_COUNT: 0
FLUSH_DISK_WRITE_BYTES: 0
FLUSH_DISK_READ_COUNT: 0
FLUSH_DISK_READ_BYTES: 0
FLUSH_DISK_ON_DISK_BYTES: 0
DISK_SOFT_LIMIT_BYTES: 4294967296
PER_RG_DISK_LIMIT_BYTES: 536870912
1 row in set (0.00 sec)
查询发生限流的 RG,定位下推阻塞原因:
tdsql > select sid, rg_id, total_mem_bytes, commit_ts, is_min_ts_rg, block_reason
-> from information_schema.logservice_memory_stat
-> where stat_type='RG' and block_reason is not null and block_reason <> ''\\G
*************************** 1. row ***************************
SID: 1001
RG_ID: 8001
TOTAL_MEM_BYTES: 104857600
COMMIT_TS: 452937184905367553
IS_MIN_TS_RG: 0
BLOCK_REASON: per-RG quota exceeded
*************************** 2. row ***************************
SID: 1001
RG_ID: 8005
TOTAL_MEM_BYTES: 838860800
COMMIT_TS: 452937184905431041
IS_MIN_TS_RG: 0
BLOCK_REASON: Global memory exceeded soft limit
2 rows in set (0.00 sec)
按内存占用查询 Top 5 的 RG:
tdsql > select sid, rg_id, total_mem_bytes, commit_ts, is_min_ts_rg
-> from information_schema.logservice_memory_stat
-> where stat_type='RG'
-> order by total_mem_bytes desc limit 5;
+------+-------+-----------------+--------------------+--------------+
| SID | RG_ID | TOTAL_MEM_BYTES | COMMIT_TS | IS_MIN_TS_RG |
+------+-------+-----------------+--------------------+--------------+
| 1001 | 8005 | 838860800 | 452937184905431041 | 0 |
| 1001 | 8003 | 419430400 | 452937184905298945 | 1 |
| 1001 | 8001 | 104857600 | 452937184905367553 | 0 |
| 1001 | 8002 | 62914560 | 452937184905312257 | 0 |
| 1001 | 8004 | 20971520 | 452937184905384961 | 0 |
+------+-------+-----------------+--------------------+--------------+
5 rows in set (0.00 sec)