云数据库 GAUSSDB-选择分布方式
选择分布方式
复制表(Replication)方式将表中的全量数据在集群的每一个DN实例上保留一份。主要适用于记录集较小的表。这种存储方式的优点是每个DN上都有该表的全量数据,在join操作中可以避免数据重分布操作,从而减小网络开销,同时减少了plan segment(每个plan segment都会起对应的线程)。缺点是每个DN都保留了表的完整数据,造成数据的冗余。一般情况下只有数据量较小的维度表才会定义为Replication表。
哈希(Hash)表将表中某一个或几个字段进行hash运算后,生成对应的hash值,根据DN实例与哈希值的映射关系获得该元组的目标存储位置。对于Hash分布表,在读/写数据时可以利用各个节点的I/O资源,大大提升表的读/写速度。一般情况下大表定义为Hash表。
范围(Range)和列表(List)分布是由用户自定义的分布策略,根据分布列的取值落入满足一定范围或者具体值的对应目标DN,这两种分布方式便于用户灵活地进行数据管理,但对用户本身的数据抽象能力有一定的要求。如表1所示。
策略 |
描述 |
适用场景 |
---|---|---|
Hash |
表数据通过hash方式散列到集群中的所有DN实例上。 |
数据量较大的事实表。 |
Replication |
集群中每一个DN实例上都有一份全量表数据。 |
小表、维度表。 |
Range |
表数据对指定列按照范围进行映射,分布到对应DN。 |
用户需要自定义分布规则的场景。 |
List |
表数据对指定列按照具体值进行映射,分布到对应DN。 |
用户需要自定义分布规则的场景。 |
如图1所示,复制表如图中的表T1,哈希表如图中的表T2。
- 在对复制表进行数据插入、修改、删除等操作时,如果用户使用声明为可下推(shippable或者immutable)的函数对不可下推的成分进行封装,则可能会导致复制表不同DN数据不一致。
- 使用带有窗口函数、rownum、limit子句、用户自定义函数等结果不稳定的语句对复制表进行数据插入或修改,可能会导致不同节点数据不完全相同。
- GaussDB视频教程_gaussdb查看表结构语句_高斯数据库视频教程_华为云
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云
- 云数据库GaussDB(for MySQL)_云数据库_分布式数据库
- GaussDB数据库云备份_华为GaussDB_高斯数据库云备份
- GaussDB数据库安全_GaussDB收费吗_高斯数据库安全
- 分布式云原生有哪些优势_为什么选择华为云云原生_分布式云原生
- GaussDB培训_GaussDB教程_高斯数据库培训-华为云
- GaussDB数据库考试_GaussDB认证_高斯数据库考试_华为云
- GaussDB咋样_openGauss和GaussDB的区别_高斯数据库咋样_华为云
- GaussDB配额_GaussDB数据库配额_高斯数据库配额_华为云