人大金仓分析型数据库系统缩容(二)

目录

表重分布

管理重分布

分布压缩表 

 分布分区表

分布索引表


表重分布

        缩容删除一部分主机之后,存储也会相应的较少,但是数据量不会减少,因此剩余节点主机 需要有足够的磁盘空间来保存数据。并且缩容重分布要求有足够多的磁盘空间来临时保存最大表的一份拷贝,因此要规划 好剩余主机的可用磁盘空间,如果空间不够用,考虑增加磁盘或分区等。

        当系统启动并可用时,可以执行缩容数据库。 运行gpshrink来标记缩容节点并创建缩容schema。下列工具不能在gpshrink在做缩容标记期间执行:gpshrink、gpexpand、gpbackup、gpcheckcat、gpconfig、gprestore。缩容Schema存储了系统中每个表的元数据,因此在缩容处理的全过程中能跟踪其状态。缩容Schema由两个表和一个跟踪缩容操作进度的视图组成:

  • gpshrink.status
  • gpshrink.status_detail
  • gpshrink.expansion_progress

        表重新分布会在系统在线时被执行。 对于很多系统,表重新分布会在一个低利用率时期执行的单一gpshrink会话中完成。 更大的系统可能会要求多个会话并且设置表重新分布的顺序来最小化对性能影响。 如果可能的话,尽量在一个会话中完成表重新分布。表重新分布的性能影响取决于一个表的尺寸、存储类型以及分区设计。 对于任何给定的表,用gpshrink重新分布需要消耗和一次CREATE TABLE AS SELECT操作相同的时间。 在重新分布一个TB级别的表时,缩容工具会使用许多可用的系统资源,这可能会影响其他数据库负载的查询性能。

管理重分布

        在规划重新分布阶段时,要考虑重新分布期间在每个表上取得的ACCESS EXCLUSIVE锁的影响。 一个表上的用户活动可能会延迟它的重新分布,而且表在重新分布期间对用户活动不可用。可以通过调整ranking来控制表重分布的顺序。重分布数据的方法:rebuild建立一个新表,把所有数据从旧表复制到新表,然后替换旧表。 这是默认行为。rebuild方法和使用CREATE TABLE AS SELECT命令创建一个新表类似。 在数据重分布期间,会在表上加ACCESS EXCLUSIVE锁。如果系统由充裕的空闲磁盘空间,可以通过首先重新分布查询使用最多的重点表来尽快恢复最优的查询性能。为这些表分配高的排名,并且在系统使用量低的时候安排重新分布操作。一次运行一个重新分布处理,直到大的或者关键的表被重新分布完。

        如果现有的主机磁盘空间有限,可以先重新分布较大的表。 由于每个表会被重新分布到被缩容后的集群上,在缩容后节点上的可用磁盘空间会减少。 所以应该首先重分布大表防止空闲空间不够用,之后就可以重新分布较小的表了。 表的重新分布要求排他锁,请把这种过程安排在非峰值时段。还要考虑下面的事情:

  • 在非峰值时段运行多个并行的重新分布处理以最大化可用的系统资源
  • 在运行多个处理时,处理的数量不能高于 系统的连接限制

分布压缩表 

         gpshrink以与堆表不同的速率重新分布未压缩和压缩的追加优化表。 压缩和解压数据所需的CPU能力会导致增加对系统性能影响。 对于具有类似数据的类似尺寸的表,可以发现如下的总体性能区别:  

  • 缩容未压缩的追加优化表比堆表快 10%
  • 定义为使用数据压缩的追加优化表以比未压缩的追加优化表的缩容速率更慢,可能慢80
  • 使用了 ZFS/LZJB 等数据压缩的系统需要更长时间重新分布

 分布分区表

        因为该缩容工具可以处理一个大型表上的每个分区,一个有效的分区设计能降低表重新分布的性能影响。 只有一个分区表的子表会不被设置为随机分布策略。一次只对一个子表应用重新分布所需的读/写锁。

分布索引表

        因为gpshrink工具必须在重新分布之后重新索引每个被索引的表,一次高级的索引会带来很大的性能影响。 在有很多索引要建立的系统中,表的重新分布要慢很多。

你可能感兴趣的:(数据库)