功能
information_schema.TDSTORE_SNAPSHOT_FLUSH_INFO 视图用于查看存储节点各列族(Column Family)的 Flush(刷盘)触发原因统计信息。TDSQL Boundless 存储引擎采用多列族(Multi-CF)架构,不同类型的数据分别写入独立的列族。每个列族拥有独立的 Memtable 和 LSM 层级结构,主要记录以下触发 Flush 的场景,会将 Memtable 中的数据落盘为 SST 文件:
后台周期性触发。
分裂合并任务触发。
手动触发。
频繁的 Flush 可能会产生较多体积较小的 SST 文件,进而增加 L0 层文件数量,带来读放大和 Compaction 压力。该视图按节点和列族维度统计各类 Flush 的触发次数,帮助您定位 SST 小文件堆积、写入毛刺等问题背后的具体原因。
适用版本
TDSQL Boundless V21.6.4.0 及以上版本。
字段说明
TDSTORE_SNAPSHOT_FLUSH_INFO 视图各字段的含义如下表所示:字段名 | 类型 | 描述 |
NODE_NAME | varchar(64) | 该行统计所属的存储节点名称。 |
CF_NAME | varchar(64) | 该行统计对应的列族(Column Family)名称。 |
CF_ID | bigint unsigned | 该列族对应的内部 ID。 |
SNAPSHOT_FLUSH_COUNT | bigint unsigned | 保存快照触发的 Flush 次数。 |
PERIODIC_FLUSH_COUNT | bigint unsigned | 后台周期性触发的 Flush 次数。 |
FORCE_FLUSH_COUNT | bigint unsigned | 手动触发的 Flush 次数。 |
SPLIT_MERGE_FLUSH_COUNT | bigint unsigned | RG 分裂合并任务触发的 Flush 次数。 |
OTHER_FLUSH_COUNT | bigint unsigned | 除上述几类以外,其他原因触发的 Flush 次数。 |
LAST_FLUSH_UNIX_MS | bigint unsigned | 该列族最近一次 Flush 的发生时间,为 Unix 时间戳,单位为毫秒。 |
LAST_FLUSH_REASON | varchar(64) | 该列族最近一次 Flush 的具体触发原因。 |
LAST_L0_FILE_COUNT | bigint unsigned | 该列族最近一次 Flush 完成后,L0 层的文件数量。 |
注意:
各类 Flush 次数为累计值,自节点启动或该列族创建以来持续累加,不会自动清零。
该视图汇聚展示集群内所有存储节点、所有列族的统计信息。
示例
示例 1:查看集群内各节点、各列族的 Flush 触发原因统计
SELECT NODE_NAME,CF_NAME,SNAPSHOT_FLUSH_COUNT,PERIODIC_FLUSH_COUNT,FORCE_FLUSH_COUNT,SPLIT_MERGE_FLUSH_COUNT,OTHER_FLUSH_COUNTFROM information_schema.TDSTORE_SNAPSHOT_FLUSH_INFO;
示例 2:定位快照安装触发 Flush 次数最多的列族
SELECT NODE_NAME,CF_NAME,SNAPSHOT_FLUSH_COUNT,LAST_L0_FILE_COUNTFROM information_schema.TDSTORE_SNAPSHOT_FLUSH_INFOORDER BY SNAPSHOT_FLUSH_COUNT DESCLIMIT 10;
示例 3:查看某个列族最近一次 Flush 的具体信息
SELECT NODE_NAME,CF_NAME,LAST_FLUSH_REASON,FROM_UNIXTIME(LAST_FLUSH_UNIX_MS / 1000) AS LAST_FLUSH_TIME,LAST_L0_FILE_COUNTFROM information_schema.TDSTORE_SNAPSHOT_FLUSH_INFOWHERE CF_NAME = 'cf_1';
注意事项
若怀疑 L0 层小文件堆积、写入延迟升高等问题与快照安装有关,可结合该视图中
SNAPSHOT_FLUSH_COUNT 与 LAST_L0_FILE_COUNT 的变化趋势进行排查,判断是否为快照安装频繁触发 Flush 所致。该视图仅提供统计计数,不提供每次 Flush 的详细历史记录。