greenplum 分区表

 range分区表、list分区表
 只实践了range分区,list分区就不写了
 
 1 创建表
        CREATE TABLE test_partition_range (
            "mount" float8,
            "endtime" float8,
            "starttime" float8
        )
        WITH (appendonly=true, compresslevel=5) DISTRIBUTED BY (endtime) PARTITION BY RANGE(mount)
               (
                  PARTITION p20180301 START (1) END (500) WITH (tablename='test_partition_range_20180301', orientation=row , appendonly=true, compresslevel=5 ),
                  PARTITION p20180302 START (500) END (2000) WITH (tablename='test_partition_range_20180302', orientation=row , appendonly=true, compresslevel=5 ),
  -- DEFAULT PARTITION other
               );
          
2 插入数据
        insert into test_partition_range VALUES (1,2,3);
        insert into test_partition_range VALUES (500,2,3);
        insert into test_partition_range VALUES (499,2,3);
        insert into test_partition_range VALUES (501,2,3);
        insert into test_partition_range VALUES (199,2,3);
        insert into test_partition_range VALUES (2000,2,3); 
如果不添加默认分区则无法插入数据2000

test_partition_range_20180301 范围为1<=amount<500 
test_partition_range_20180302 范围为500<=amount<2000
2000进入默认表

3  手动添加分区
        alter table test_partition_range add partition p20180303 start (2000) end (2000000) WITH (tablename='test_partition_range_20180303', orientation=row , appendonly=true, compresslevel=5 );
    
注意事项


参考:Greenplum4.2.2管理员指南


 选择表的存储模式
   GPDB提供几种灵活的存储处理模式(或者混合模式)。在创建一张新的TABLE时,有几个选项来决定数据如何储存在磁盘上。本节介绍这几种选项,以及出于工作负载的考虑如何实现最佳的储存模式。
    选择堆存储(Heap)或只追加(Append-Only/AO)存储
    选择行存储(Row-Orientation)或列存储(Column-Orientation)
    使用压缩(只可以是AO表)
    检查只追加(AO)表的压缩和分布情况
   选择堆存储或者只追加存储
   缺省情况下GPDB使用与PostgreSQL相同的存储模式-- 堆存储。堆存储模式在OLTP类型工作负载的DB中很常用-- 数据在初始装载后经常变化。UPDATE和DELETE操作需要对ROW级别做版本控制从而确保DB事务处理的可靠性。堆表更适合一些小表,比如维表,这种表可能会在初始化装载后经常更新数据。
   GPDB还提供了一种称之为只追加存储模式的TABLE。AO表更适合数据仓库中非规范化事实表,这些表通常都是系统中最大的表。事实表通常是批量装载数据且只进行只读式查询操作。AO表在数据装载后是不支持更新的。将事实表数据存入AO表时不会保留更新相关ROW级别的信息(大约每ROW需要20字节)。AO表达到了更精简和优化的页面存储结构。AO表不允许执行DELETE和UPDATE操作。该存储模式强化了批量数据装载的性能。不推荐一行一行的使用INSERT语句来装载数据。
   创建堆表
   行存堆表是缺省的存储模式,创建堆表时不需要额外的CREATE TABLE语法。例如:
   => CREATE TABLE foo (a int, b text) DISTRIBUTED BY (a);
   创建只追加表
   在CREATE TABLE时使用WITH子句来指明TABLE的存储模式。如果没有指明,该表将会是缺省的行存堆表。例如,要创建一张没有压缩的AO表:
   => CREATE TABLE bar (a int, b text) WITH (appendonly=true)
   选择行存或列存
   GPDB提供存储导向的选择:行存或列存(或者混合)。本节提供一些关于正确选择行存或列存的常规指导。不过具体还需根据查询工作负载来确切评估。

   从最通用的目的和混合工作负载来考虑,行存可以提供灵活与性能的最佳结合。不过在一些特定的情况下,列存可以提供更好的I/O和存储性能

如何消除表膨胀,参考

https://gp-docs-cn.github.io/docs/best_practices/bloat.html

猜你喜欢

转载自blog.csdn.net/changyuan101/article/details/79442075