更新时间:2024-03-30 GMT+08:00
分享

哪些系统表不能做VACUUM FULL

从功能实现上,GaussDB(DWS)的系统表都可以做VACUUM FULL,但是会上八级锁,涉及这些系统表的业务会被阻塞。

根据数据库版本不同,建议如下:

8.1.3及以上版本

  • 8.1.3及以上版本的集群,AUTO VACUUM默认是打开的(由GUC参数autovacuum控制),用户通过设置对应的GUC参数后,系统会自动触发所有系统表和用户的行存表进行VACUUM FULL,用户不需要手动执行vacuum。
    • autovacuum_max_workers = 0,系统表和普通表都不会触发。
    • autovacuum = off,普通表不会触发,但系统表会触发。
  • 以上仅针对行存表的AUTO VACCUM触发,如果需要针对列存表做自动触发VACUUM,还需要用户在管理控制台上配置智能调度任务。具体参见运维计划

8.1.1及历史版本

  1. 以下系统表在做VACUUM FULL时会影响所有业务,请选择空闲时间窗或停止业务时操作。
    • pg_statistic (统计信息,建议不要清理,会影响业务查询性能)
    • pg_attribute
    • pgxc_class
    • pg_type
    • pg_depend
    • pg_class
    • pg_index
    • pg_proc
    • pg_partition
    • pg_object
    • pg_shdepend
  2. 以下系统表主要影响资源的监控和表大小的查询接口,不影响其他业务。
    • gs_wlm_user_resource_history
    • gs_wlm_session_info
    • gs_wlm_instance_history
    • gs_respool_resource_history
    • pg_relfilenode_size
  3. 其余系统表不占用空间,通常不做清理。
  4. 建议日常运维活动中,每周监控以下系统表的大小,如果一定要回收这些空间,优先根据系统表的大小进行清理,抓主要矛盾。
    语句如下:
    1
    SELECT c.oid,c.relname, c.relkind, pg_relation_size(c.oid) AS size  FROM pg_class c WHERE c.relkind IN ('r') AND c.oid <16385 ORDER BY size DESC;
    
分享:

数据库使用 所有常见问题

more