数据仓库服务 GAUSSDB(DWS)-性能优化之业务降IO优化:场景5:无分区、有分区不剪枝

时间:2024-05-07 20:29:47

场景5:无分区、有分区不剪枝

例如某业务表进场使用createtime时间列作为过滤条件获取特定时间数据,对该表设计为分区表后没有走分区剪枝(Selected Partitions数量多),Scan花了701785ms,IO效率极低。

在增加分区键creattime作为过滤条件后,Partitioned scan走分区剪枝(Selected Partitions数量极少),性能从700s优化到10s,IO效率极大提升。

常见场景:按照时间存储数据的大表,查询特征大多为访问当天或者某几天的数据,这种情况应该通过分区键进行分区剪枝(只扫描对应少量分区)来极大提升IO效率,不走分区剪枝常见的情况有:

  • 未设计成分区表。
  • 设计了分区没使用分区键做过滤条件。
  • 分区键做过滤条件时,对列值有函数转换。

触发因素:未合理使用分区表和分区剪枝功能,导致扫描效率低。

处理方式

  • 对按照时间特征存储和访问的大表设计成分区表。
  • 分区键一般选离散度高、常用于查询过滤条件中的时间类型的字段。
  • 分区间隔一般参考高频的查询所使用的间隔,需要注意的是针对列存表,分区间隔过小(例如按小时)可能会导致小文件过多的问题,一般建议最小间隔为按天。
support.huaweicloud.com/trouble-dws/dws_09_0111.html