数据仓库服务 GAUSSDB(DWS)-性能优化之业务降IO优化:场景2:脏数据&数据清理

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

场景2:脏数据&数据清理

某SQL总执行时间2.519s,其中Scan占了2.516s,同时该表的扫描最终只扫描到0条符合条件数据,过滤了20480条数据,即总共扫描了20480+0条数据却消耗了2s+,扫描时间与扫描数据量严重不符,此现象可判断为由于脏数据多从而影响扫描和IO效率。

查看表脏页率为99%,Vacuum Full后性能优化到100ms左右。

触发因素:表频繁执行update/delete导致脏数据过多,且长时间未VACUUM FULL清理。

处理方法

  1. 对频繁update/delete产生脏数据的表,定期VACUUM FULL,因大表的VACUUM FULL也会消耗大量IO,因此需要在业务低峰时执行,避免加剧业务高峰期IO压力。
  2. 当脏数据产生很快,频繁VACUUM FULL也会消耗大量IO,甚至加剧整个系统的IO瓶颈,这时需要考虑脏数据的产生是否合理。针对频繁delete的场景,可以考虑如下方案:

    1. 全量delete修改为truncate或者使用临时表替代。
    2. 定期delete某时间段数据,设计成分区表并使用truncate&drop分区替代。

support.huaweicloud.com/trouble-dws/dws_09_0111.html