对于gp数据库,分布式密钥(dk )遵循以下原则:
均匀分布数据原则:
为了最大限度地提高性能,实例应该尽可能多地存储相同量的数据。 如果数据分布不均、不平衡或倾斜,存储大量数据的实例在处理自己的部分数据时会消耗更多的工作量。 对此,请考虑选择具有唯一性的DK,如主键。
本地操作原则:
处理查询时,例如,可以先进行关联、排序、聚合。 系统层面的运用效率很低。 如果不同表中的DK相同,则DK中的关联可以最有效地在本地完成大多数任务。 同时,总分亲子表的DK必须一致。 中间过程表、临时表的DK必须尽可能保持与源表的一致性,避免重新分布。
的查询负载均衡原则:
如果发生查询,则希望所有实例都处理等量的数据。 因此,通过合理的DK设计,尽可能地将查询的处理负荷分布在各个节点上,保证where的结果集在各个节点上是均匀的。
DK字段越少越好。
DK设计规格如下。
每个表都必须显示在“分布式by”中指定的分布键。 不能使用默认DK创建。 对不能确定的采用随机分布。
原则上分布键为1个,最多不得超过3个。
相关表格的分发密钥必须尽可能一致。 如账户主文件、账户明细文件、账户资金余额文件有相关查询需求,可将账号作为三张表的下发键。
对于维表,必须选择代码表的主键作为分布式键。
对于实体表,选择逻辑主键作为分布式键。
对于协议主题中的所有表以及协议主题和其他主题的关联表,必须使用协议编号作为分发密钥。
针对当事人主题表,采用当事人编号作为分布关键字。
对于事件主题表,使用事件编号作为分发键。
其他主题使用逻辑主键作为分布式键。
分布关键字字段无法执行更新操作
尽量不要使用随机分布,因为在节点之间交换数据会影响性能。
为了使数据均匀分布,如果没有合适的字段作为分布键,请选择数据表的主键作为分布键。
只有在没有逻辑主键且没有合适字段作为分布键的数据表中,才能在“分布式随机”中设置分布策略。
随机分布适合场景。 只有在查询时不需要与其他表相关联,或者只与小表相关联的数据表时,才采用随机分布策略。