翻译为个人兴趣,仅供学习参考,侵删
官方原文连接:http://docs.citusdata.com/en/v9.3/develop/api_metadata.html#coordinator-metadata
citus表和视图
协调器节点元数据
citus根据分发列将每个分布式表分成多个分片,然后,协调器维护元数据表,以跟踪这些分片的健康状况和位置,获得统计信息。本节中将对这些源数据表及其结构进行介绍,你可以登录协调器节点然后使用sql语句对这些信息进行查询使用。
Partition table/分区表
pg_dist_partition表,存储该数据库中是分布式表的表的元数据,对于每个分布式表,它还存储有关分布方法和有关分发列的详细信息。
名称 | 类型 | 描述 |
logicalrelid | regclass | 该值参考pg_class系统目录表中的relfilenode列。 对应分布式表名 |
partmethod | char | 用于分区/分发的方法。值与不同的分区方法的对应为: append: ‘a’ hash: ‘h’ reference table: ‘n’ |
partkey | text | 有关分发列(包括列)的详细信息。编号,类型和其他相关信息。 |
colocationid | integer | 该表属于哪个位置组。同一组中的表允许同位置的联接、分布汇总以及其他优化。 此值引用pg_dist_colocation表中的colocationid列。 |
repmodel | char | 用于数据复制的方法。值与复制方法的对应关系为: *基于citus语句的复制:“ c” |
SELECT * from pg_dist_partition;
logicalrelid | partmethod | partkey | colocationid | repmodel
---------------+------------+------------------------------------------------------------------------------------------------------------------------+--------------+----------
github_events | h | {VAR :varno 1 :varattno 4 :vartype 20 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 4 :location -1} | 2 | c
(1 row)
Shard table/分片的表
pg_dist_shard表存储有关表的各个分片的元数据。包括该分片所属的分布式表和分发列的统计信息。对于append类型分布式表,这些统计信息对应于分布列的最小值/最大值。如果是hash分布式表,则对应分配给该分片的哈希值范围。这些统计信息用于在SELECT查询期间筛去不相关的分片。
名称 | 类型 | 描述 |
---|---|---|
logicalrelid | regclass | 该分片所属的分布式表。 此值引用pg_class系统目录表中的relfilenode列。 |
shardid | bigint | 分配给该分片的全局唯一标识符。分片id |
shardstorage | char | 该分片使用的存储类型。 下表讨论了不同的存储类型。 |
shardminvalue | text | 对于append类型分布式表,这些统计信息对应于分布列的最小值(包含边界)。 对于hash类型分布式表,则对应分配给该分片的哈希值范围最小值(包含边界)。 |
shardmaxvalue | text | 对于append类型分布式表,这些统计信息对应于分布列的最大值(包含边界)。 对于hash类型分布式表,则对应分配给该分片的哈希值范围最大值(包含边界)。 |
SELECT * from pg_dist_shard;
logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue
---------------+---------+--------------+---------------+---------------
github_events | 102026 | t | 268435456 | 402653183
github_events | 102027 | t | 402653184 | 536870911
github_events | 102028 | t | 536870912 | 671088639
github_events | 102029 | t | 671088640 | 805306367
(4 rows)
分片存储类型
pg_dist_shard表中的shardstorage列指示用于该分片的存储类型。 下面是不同分片存储类型及其表示的简要概述。
存储类型 | 碎片存储 值 |
描述 |
---|---|---|
TABLE | ‘t’ | 分片存储属于常规分布式表的数据。 |
COLUMNAR | ‘c’ | 分片存储列数据。 (由分布式cstore_fdw表使用) |
FOREIGN | ‘f’ | 分片存储外部数据。 (由分布式file_fdw表使用) |
Shard placement table/分片放置表
pg_dist_placement表跟踪工作节点上的分片副本的位置,分配给特定节点的分片的每个副本称为“分片放置”。 该表存储有关每个“分片放置” 的运行状况和位置信息。
名称 | 类型 | 描述 |
---|---|---|
shardid | bigint | 与该展示位置关联的分片标识符。 此值引用pg_dist_shard目录表中的shardid列。 |
shardstate | int | 描述此分片放置的状态。不同的分片状态将在下节讨论。 |
shardlength | bigint | 对于append类型分布式表,为工作节点上的“分片放置”大小(以字节为单位); 对于哈希分布式表,为零。 |
placementid | bigint | 每个“分片放置”自动生成的唯一标识符。分片放置id |
groupid | int | 一个标识符,用于表示个组id,一个组为:使用流复制模型时,包含一个主服务器和零个或多个辅助服务器。 |
SELECT * from pg_dist_placement;
shardid | shardstate | shardlength | placementid | groupid
---------+------------+-------------+-------------+---------
102008 | 1 | 0 | 1 | 1
102008 | 1 | 0 | 2 | 2
102009 | 1 | 0 | 3 | 2
102009 | 1 | 0 | 4 | 3
102010 |