分区表--决定一个表的分区策略

分区的作用
表分区让我们能够把表划分成较小的,容易管理的小块来支持更大的表,例如事实表。通过让Greenplum数据库查询优化器只扫描满足给定查询所需的数据而避免扫描大表的全部内容,分区表能够提升查询性能。

决定一个表的分区策略
什么样的表适合做分区表呢?如果下列问题的答案全部或者大部分都是yes,表分区就是一种可行的改进查询性能的数据库设计策略。如果下列问题的答案大部分都是no,表分区对于该表就不是正确的方案。请测试用户的设计策略来确保查询性能能得到预期的改进。

表是否足够大? 大型的事实表是进行表划分很好的候选。如果在一个表中有几百万或者几十亿个记录,从逻辑上将数据分成较小的块会让用户在性能方面受益。对于只有几千行或者更少数据的小表来说,维护分区的管理开销将会超过用户可能得到的性能收益。

用户是否体验到不满意的性能? 正如任何性能调节的动机一样,只有针对一个表的查询产生比预期还要慢的响应时间时才应该对该表分区。
用户的查询谓词有没有可识别的访问模式? 检查用户的查询负载的WHERE子句并且查找一直被用来访问数据的表列。例如,如果大部分查询都倾向于用日期查找记录,那么按月或者按周的日期分区设计可能会对用户有益。或者如果用户倾向于根据地区访问记录,可考虑一种列表分区设计来根据地区划分表。
用户的数据仓库是否维护了一个历史数据的窗口? 另一个分区设计的考虑是用户的组织对维护历史数据的业务需求。例如,用户的数据仓库可能要求用户保留过去十二个月的数据。如果数据按月分区,用户可以轻易地从仓库中删除最旧的月份分区并且把当前数据载入到最近的月份分区中。

数据能否基于某种定义的原则被划分成差不多相等的部分? 尽可能选择将把用户的数据均匀划分的分区原则。如果分区包含基本同等数量的记录,查询性能会基于创建的分区数量而提升。例如,通过将一个大型表划分成10个分区,一个查询的执行速度将比在未分区表上快10倍,前提是这些分区就是为支持该查询的条件而设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值