跳到主要内容
版本:Nightly

REGION_INFO

REGION_INFO 表提供 Region 的运行时和 manifest 元数据。你可以使用该表查看 Region 的角色和状态、是否可写、序列号、manifest 版本、Region 选项、SST 格式以及上报该 Region 的 Datanode。

USE INFORMATION_SCHEMA;
DESC REGION_INFO;

输出如下:

+------------------------+---------+-----+------+---------+---------------+
| Column | Type | Key | Null | Default | Semantic Type |
+------------------------+---------+-----+------+---------+---------------+
| region_id | UInt64 | | NO | | FIELD |
| table_id | UInt32 | | NO | | FIELD |
| region_number | UInt32 | | NO | | FIELD |
| region_group | UInt8 | | NO | | FIELD |
| region_sequence | UInt32 | | NO | | FIELD |
| state | String | | NO | | FIELD |
| role | String | | NO | | FIELD |
| writable | Boolean | | NO | | FIELD |
| committed_sequence | UInt64 | | NO | | FIELD |
| flushed_sequence | UInt64 | | YES | | FIELD |
| manifest_version | UInt64 | | NO | | FIELD |
| compaction_time_window | String | | YES | | FIELD |
| region_options | String | | NO | | FIELD |
| sst_format | String | | NO | | FIELD |
| node_id | UInt64 | | YES | | FIELD |
+------------------------+---------+-----+------+---------+---------------+

REGION_INFO 表中的字段描述如下:

  • region_id: Region 的 ID。
  • table_id: Region 所属表的 ID。
  • region_number: Region 在表中的编号。
  • region_group: Region ID 中编码的 Region 分组。
  • region_sequence: Region 在分组内的序列号。
  • state: Region 完整的运行时角色和状态。可能的值包括 FollowerLeader(Writable)Leader(Staging)Leader(EnteringStaging)Leader(Altering)Leader(Dropping)Leader(Truncating)Leader(Editing)Leader(Downgrading)
  • role: Region 的粗粒度角色,可以是 LeaderFollower
  • writable: Region 是否接受写入。
  • committed_sequence: Region 已提交的序列号。
  • flushed_sequence: 已持久化到 SST 的最新序列号。如果尚未 flush,值为 NULL
  • manifest_version: Region 的 manifest 版本。
  • compaction_time_window: Region 的可读 compaction 时间窗口。
  • region_options: 以 JSON 编码的 Region 选项。
  • sst_format: Region 使用的 SST 格式,例如 primary_keyflat
  • node_id: 上报该行的 Datanode ID。当该行不是由 Datanode 上报时,值可以为 NULL

按如下方式查询某张表的 Region 运行时和 manifest 信息:

SELECT
i.region_id,
i.state,
i.role,
i.writable,
i.committed_sequence,
i.flushed_sequence,
i.manifest_version,
i.compaction_time_window,
i.region_options,
i.sst_format,
i.node_id
FROM REGION_INFO i
WHERE i.region_id IN (
SELECT region_id FROM REGION_PEERS WHERE table_name = 'system_metrics'
)
ORDER BY i.region_id;

按如下方式查询 Leader 与 Follower 之间最大的 manifest 版本差:

SELECT
MAX(
CAST(l.manifest_version AS INT64) - CAST(f.manifest_version AS INT64)
) AS max_manifest_version_diff
FROM REGION_INFO l
JOIN REGION_INFO f ON l.region_id = f.region_id
WHERE l.role = 'Leader' AND f.role = 'Follower';

如果需要找出 manifest 版本差最大的 Region 和 Datanode 组合,可以使用如下查询:

SELECT
l.region_id,
l.node_id AS leader_node_id,
f.node_id AS follower_node_id,
l.manifest_version AS leader_manifest_version,
f.manifest_version AS follower_manifest_version,
CAST(l.manifest_version AS INT64) - CAST(f.manifest_version AS INT64)
AS manifest_version_diff
FROM REGION_INFO l
JOIN REGION_INFO f ON l.region_id = f.region_id
WHERE l.role = 'Leader' AND f.role = 'Follower'
ORDER BY manifest_version_diff DESC
LIMIT 1;