Gauss高斯:分布键

分布键是决定数据分布到不同节点的列,直接影响数据的存储位置和后续查询的数据流向. 在分布式数据库系统中,分布键用于决定数据如何在不同的节点或分区中分布。

作用

分类

分布键的选择

避免常量过滤条件的字段:在选择分布键时,应尽量避免选择那些在查询中常作为常量过滤条件的字段,如果某个字段经常被用作固定值查询,将其作为分布键可能会导致数据分布不均,降低查询效率。

优先选择关联条件字段:在复杂查询中,如果某个字段经常被用作连接条件,那么将其设置为分布键可以显著提高连接操作的效率,因为这样可以最大限度地减少不同节点间数据传输的需要

数据分布的均衡性:分布键的选择需要考虑数据分布的均衡性,避免某些节点数据过多而其他节点空闲,影响整体的负载均衡。

预期的扩展性:在预期的数据库扩展时,分布键的选择应允许灵活调整,以适应未来数据量和查询模式的变化

 主键和分布键的区别

数据一致性:选择主键时,应确保其能唯一标识每一行数据,避免数据重复和更新异常。

查询性能优化:分布键的选择应考虑减少跨节点数据交换,优化查询性能,通常选择关联条件多的列作为分布键,可以显著提高查询效率

默认设置

自动选择机制:在GaussDB(DWS)中,如果用户未显式设置分布键,系统会默认选择主键的第一列作为分布键。

主键包含分布键:如果用户同时设置了主键和分布键,系统要求主键必须包含分布键,这有助于保证数据的聚集性和查询的效率。

参考:

在GaussDB(DWS)数据库中,设置主键后是否还需配置分布键? - 酷盾

 修改表的分布键

有一个名为 sales_data 的表,当前使用 customer_id 作为分布键,我们想要将其改为使用 sale_date 作为分布键

修改分布键类型

查询分布类型和分布列

查询系统表来确定表的分布类型和分布列, pgxc_class 是一个系统表,用于存储表的分布相关信息,其中 pclocatortype 字段定义了表的分布策略

示例

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 = 'sales_data';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值