用HAWQ轻松取代传统数据仓库 —— 大表分区

Posted wzy0623

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用HAWQ轻松取代传统数据仓库 —— 大表分区相关的知识,希望对你有一定的参考价值。

一、HAWQ中的分区表
        与大多数关系数据库一样,HAWQ也支持分区表。这里所说的分区表是指HAWQ的内部分区表,外部分区表在后面“外部数据”篇讨论。在数据仓库应用中,事实表通常有非常多的记录,分区可以将这样的大表在逻辑上分为小的、更易管理的数据片段。HAWQ的优化器支持分区消除以提高查询性能。只要查询条件中可以使用分区键作为过滤条件,那么HAWQ只需要扫描满足查询条件的分区,而不必进行全表扫描。
        分区并不改变表数据在segment间的物理分布。表的分布是物理的,无论是分区表还是非分区表,HAWQ都会在segment上物理地分布数据,并且并行处理查询。而表的分区是逻辑上的,HAWQ逻辑分隔大表以提高查询性能和数据仓库应用的可维护性。例如,将老的分区数据从数据仓库转储或移除,并建立新的数据分区等。HAWQ支持以下分区类型:
  • 范围分区:基于数字范围分区,如日期、价格等。
  • 列表分区:基于列表值分区,如销售区域、产品分类等。
  • 两者混合的分区类型。
        图1是一个混合类型分区表的例子,sales表以销售日期范围作为主分区,而以销售区域作为一个日期分区中的列表子分区键。注意,HAWQ并没提供类似Oracle的在线重定义功能,它只能使用CREATE TABLE命令创建分区表,而没有简单的命令能够将一个非分区表转化成分区表。最好在建表之前就规划好分区方式和维护方法,因为当一个非分区表已经存在大量数据后再改作分区表的操作,时间和空间消耗上都是很棘手的问题。