文档首页 > > 开发指南> 优化查询性能> 改进查询> 审视和修改表定义

审视和修改表定义

分享
更新时间: 2019/07/22 GMT+08:00

在分布式框架下,数据分布在各个DN上。一个或者几个DN的数据存在一块物理存储设备上,好的表定义至少需要达到以下几个目标:

  1. 表数据均匀分布在各个DN,以防止单个DN对应的存储设备空间不足造成集群有效容量下降。选择合适分布列,避免数据分布倾斜可以实现该点。
  2. Scan压力均匀分散在各个DN,以避免单DN的Scan压力过大,形成Scan的单节点瓶颈。分布列不选择基表上等值filter中的列可以实现该点。
  3. 减少扫描数据数据量。通过分区的剪枝机制可以实现该点。
  4. 尽量极少随机IO。通过聚簇/局部聚簇可以实现该点。
  5. 尽量避免数据shuffle,减小网络压力。通过选择join-condition或者group by列为分布列可以最大程度的实现这点。

从上述描述来看表定义中最重要的一点是分布列的选择。创建表定义一般遵循图1所示流程。表定义在数据库设计阶段创建,在SQL调优过程中进行审视和修改。

图1 表定义流程

审视和修改表定义的具体操作方法,请参见表设计最佳实践

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区