YMatrix 数据分布策略
YMatrix 支持三种核心数据分布策略,决定数据在集群节点间的存储方式,直接影响查询性能与集群稳定性:
分布策略一表速览
| 分布方式 |
适用场景 |
优点 |
缺点 |
| HASH 分布 |
根据分布键做等值连接操作的大表 |
相同值的数据都在相同节点上,便于做等值连接 |
如果数据本身值的随机性较差,可能会造成倾斜 |
| 随机分布 |
不需要做连接,并且没有合适分布键的大表 |
数据分布均匀性更好,不容易出现倾斜 |
数据分布无规律,优化器无法根据数据分布规律做优化 |
| 复制分布 |
不经常改动,且经常做连接、需要索引的小表 |
每个节点都有数据副本 |
需要占用更多空间 |
哈希分布(HASH)
工作原理
- 创建表时指定 1 个或多个字段作为分布键;
- 插入数据时,系统根据分布键值计算哈希值,将数据映射到对应的 Segment 节点;
- NULL 值会被正常哈希映射到特定 Segment,保证数据分布规则统一。
核心优势
- 数据分布均匀:高基数分布键可避免单个节点数据过多导致的热点问题;
- 查询性能优异:等值查询(WHERE column = value)可直接定位目标节点,无需跨节点扫描;
- JOIN 效率高:多表关联时,若关联字段为相同分布键,可减少节点间数据交换,提升关联速度。
适用场景
- 大部分业务表(实体表、事实表),尤其是查询频繁、数据量大的表;
- 需频繁进行等值查询或多表 JOIN 的场景(如财务系统、电商订单系统);
- 有明确核心查询维度(高基数字段)的表。
随机分布(RANDOM)
工作原理
- 插入数据时,系统随机将数据分配到集群的各个 Segment 节点;
- 无需指定分布键,系统自动保证数据在节点间平均分布。
核心优势
- 数据分布完全均匀,无热点节点;
- 配置简单,无需额外设计分布键。
适用场景
- ETL 临时表、中间过程表;
- 测试表、数据量小且查询频率低的表;
- 无明确查询维度、无需多表关联的表。
注意事项
- 表间 JOIN 需进行全节点数据交换,性能较低,不适合核心业务表。
复制分布(REPLICATED)
工作原理
- 表的完整数据在集群每个 Segment 节点上都存储一份副本;
- 查询时可直接从本地节点读取数据,无需跨节点请求。
核心优势
- 单节点查询性能极高:无需数据移动,响应速度快;
适用场景
- 小表(数据量 < 100MB):如维度表、代码表、配置表;
- 频繁查询且数据量小的表(如科目表、用户角色表);
- 需与大量表关联的维度表(如 GIS 基础信息表)。
注意事项
- 存储空间占用大:数据冗余量与节点数成正比;
- 写入性能较低:需同步更新所有节点的副本数据,不适合写入频繁的表。