一、适用版本
TDSQL Boundless V21.6.4.0及以上版本。
二、字段说明
| 字段名 | 类型 | 描述 |
| NODE_NAME | VARCHAR(513) | SQLEngine 节点的名称。 |
| CF_NAME | VARCHAR(193) | ColumnFamily 的名称。 |
| CF_ID | BIGINT UNSIGNED | ColumnFamily 的 ID。 |
| LEVEL | BIGINT UNSIGNED | LSM-tree 的层级,从0开始。 |
| FILE_COUNT | BIGINT UNSIGNED | 该层级的 SST 文件数量。 |
| TOTAL_SIZE_BYTES | BIGINT UNSIGNED | 该层级所有 SST 文件的总大小,单位字节。 |
| AVG_FILE_SIZE_BYTES | BIGINT UNSIGNED | 该层级 SST 文件的平均大小,单位字节。 |
| BEING_COMPACTED_FILE_COUNT | BIGINT UNSIGNED | 该层级正在被 Compaction 的文件数量。 |
| COMPRESSION_SUMMARY | VARCHAR(1024) | 该层级各压缩类型的文件数量分布摘要。 |
| COMPRESSION_RATIO | VARCHAR(1024) | 该层级的压缩比。 |
三、使用说明
查询时可通过 WHERE CF_ID = xxx 或 WHERE LEVEL = xxx 等值条件进行下推过滤:仅拉取指定 ColumnFamily 或指定层级的数据,而非拉取全部数据后再由 SQL 层过滤,可显著减少节点间 RPC 传输数据量。目前仅支持 CF_ID、LEVEL 两个字段的等值条件下推,其余条件(如范围查询、OR 组合条件)仍由 SQL 层过滤。
四、示例
查询所有节点、所有 ColumnFamily 的 LSM 层级分布。
tdsql> SELECT * FROM information_schema.tdstore_lsm_level_info LIMIT 3\\G*************************** 1. row *************************** NODE_NAME: node-1-001 CF_NAME: user_region CF_ID: 2 LEVEL: 0 FILE_COUNT: 4 TOTAL_SIZE_BYTES: 268435456 AVG_FILE_SIZE_BYTES: 67108864BEING_COMPACTED_FILE_COUNT: 0 COMPRESSION_SUMMARY: kLZ4Compression: 4 COMPRESSION_RATIO: 2.35*************************** 2. row *************************** NODE_NAME: node-1-001 CF_NAME: user_region CF_ID: 2 LEVEL: 1 FILE_COUNT: 10 TOTAL_SIZE_BYTES: 671088640 AVG_FILE_SIZE_BYTES: 67108864BEING_COMPACTED_FILE_COUNT: 0 COMPRESSION_SUMMARY: kLZ4Compression: 10 COMPRESSION_RATIO: 2.41…
查询指定 ColumnFamily(CF_ID = 20)第0层的文件分布,CF_ID 和 LEVEL 的等值条件会被下推到 TDStore 节点执行。
tdsql> SELECT cf_id, level, file_count, total_size_bytes FROM information_schema.tdstore_lsm_level_info WHERE cf_id = 20 and level = 0;+——-+——-+————+——————+| CF_ID | LEVEL | FILE_COUNT | TOTAL_SIZE_BYTES |+——-+——-+————+——————+| 20 | 0 | 3 | 188743680 |+——-+——-+————+——————+1 row in set (0.01 sec)