1. 高斯表的分布策略
分布式高斯数据库(GaussDB)支持以下分布方式:
HASH 分布: 基于某些列的哈希值进行分布。
RANGE 分布: 按范围分布数据。
REPLICATED 分布: 数据在每个节点上复制。
RANDOM 分布: 数据随机分布。
在高斯数据库(GaussDB)的分布式架构中,可以通过查询pgxc_class
和其他相关系统表来查看表的分布信息。pgxc_class
是一个系统表,用于存储表的分布相关信息。这是数据库分布策略的核心元数据表之一,定义了每个表在集群中的分布方式和相关属性。
2. pgxc_class 表定义
\d pgxc_class
输出以下内容:
字段名 | 数据类型 |
---|---|
pcrelid | oid |
pclocatortype | char |
pcattnum | int2[] |
nodeoids | oid[] |
字段解释
pcrelid
表示表的 OID(对象标识符),对应于
pg_class.oid
。用于连接
pg_class
获取表名(relname
)等信息。
pclocatortype,定义了表的分布策略
'H'
(HASH):基于分布列的哈希值分布到不同的节点。'R'
(RANGE):按范围将数据分布到不同的节点。'C'
(REPLICATED):数据完全复制到所有节点。'N'
(RANDOM):数据随机分布到节点。
pcattnum
存储分布列的列号数组,每个列号对应
pg_attribute.attnum
。如果
pclocatortype
是 HASH 或 RANGE 分布,则此字段指示哪些列被用作分布键。
nodeoids
表存储的节点 OID 数组。
每个 OID 对应一个节点,可以通过查询其他系统表(如
pgxc_node
)来解析节点信息。
以下是查询表 `t` 的分布方式的 SQL:
SELECT
c.relname AS table_name,
CASE
WHEN x.pclocatortype = 'H' THEN 'HASH'
WHEN x.pclocatortype = 'R' THEN 'RANGE'
WHEN x.pclocatortype = 'C' THEN 'REPLICATED'
WHEN x.pclocatortype = 'N' THEN 'RANDOM'
ELSE 'UNKNOWN'
END AS distribution_type
FROM
pg_class c
JOIN
pgxc_class x
ON
c.oid = x.pcrelid
WHERE
c.relname = 't';
字段解释
`pg_class`: 存储表和视图的基本信息,`relname` 是表名。
`pgxc_class` : 存储表的分布相关信息。
`pclocatortype`: 定义了表的分布策略, 取值如下
'H'
(HASH):基于分布列的哈希值分布到不同的节点。'R'
(RANGE):按范围将数据分布到不同的节点。'C'
(REPLICATED):数据完全复制到所有节点。'N'
(RANDOM):数据随机分布到节点。
4. 查询分布列
如果表是 HASH 或 RANGE 分布,可以进一步查询具体的分布列:
SELECT
c.relname AS table_name,
a.attname AS distribution_column
FROM
pg_class c
JOIN
pgxc_class x
ON
c.oid = x.pcrelid
JOIN
pg_attribute a
ON
a.attrelid = c.oid AND a.attnum = ANY(x.pcattnum)
WHERE
c.relname = 't';
字段解释
`pg_attribute`: 存储列的信息,`attname` 是列名。
`pcattnum`: 存储分布列的列号。
5. 应用场景
通过查询pgxc_class
可以确定表的分布类型和分布列。在高斯数据库中,分布类型和列是分布式存储和性能优化的重要因素,尤其是 HASH 和 RANGE 分布,需要根据业务场景选择合适的分布方式。
分布策略分析:通过查询
pgxc_class
,可以了解表的分布类型(如 HASH 或 RANGE)以及分布列是否合理,辅助优化数据分布。节点定位:结合
nodeoids
字段和pgxc_node
,可以定位表数据所在的物理节点。分布调整:如果分布策略不合理,可以使用
ALTER TABLE
或重新建表的方式调整分布策略。
🌟关于PawSQL
PawSQL专注于数据库性能优化自动化和智能化,提供的解决方案覆盖SQL开发、测试、运维的整个流程,广泛支持MySQL、PostgreSQL、OpenGauss、Oracle等主流商用和开源数据库,以及openGauss,人大金仓、达梦等国产数据库,为开发者和企业提供一站式的创新SQL优化解决方案;有效解决了数据库SQL性能及质量问题,提升了数据库系统的稳定性、应用性能和基础设施利用率,为企业节省了大量的运维成本和时间投入。