数据仓库服务 GaussDB(DWS)-降低I/O的处理方案:场景2:脏数据&数据清理

时间:2025-02-12 15:02:21

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

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

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

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

处理方法

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

    1. 全量DELETE修改为TRUNCATE或者使用临时表替代。
    2. 定期DELETE某时间段数据,使用分区表并使用TRUNCATE或DROP分区替代。

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