目录

定义

语法

描述

参数

输出

注意


定义

VACUUM 垃圾收集并根据需要分析一个数据库。

语法

VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE | DISABLE_PAGE_SKIPPING } [, ...] ) ] [ table_name [ (column_name [, ...] ) ] ]

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table_name ]

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table_name [ (column_name [, ...] ) ] ]

描述

VACUUM收回由死亡元组占用的存储空间。在通常的PostgreSQL操作中,被删除或者被更新废弃的元组并没有在物理上从它们的表中移除,它们将一直存在直到一次VACUUM被执行。因此有必要周期性地做VACUUM,特别是在频繁被更新的表上。

在不带任何参数的情况下,VACUUM会处理当前用户具有清理权限的当前数据库中的每一个表。通过使用一个参数,VACUUM可以只处理指定表。

VACUUM ANALYZE对每一个选定的表ANALYZE。这是两种命令的一种方便的组合形式,可以用于例行的维护脚本。其处理细节可参考ANALYZE。

简单的 VACUUM(不带FULL)简单地收回空间并使其可以被重用。这种形式的命令可以和表的普通读写操作并行,因为它不会获得一个排他锁。但是,这种形式中额外的空间并没有被还给操作系统,它仅仅被保留在同一个表中以备重用。VACUUM FULL将表的整个内容重写到一个新的磁盘文件中,并且不包含额外的空间,这使得没有被使用的空间被还给操作系统。这种形式的命令更慢并且在其被处理时要求在每个表上保持一个排他锁。

当选项列表被包围在圆括号中时,选项可以被写成任何顺序。如果没有圆括号,选项必须严格按照上面所展示的顺序指定。有圆括号的语法在PostgreSQL 9.0时被加入,无圆括号的语法则被废弃。

参数

FULL

选择"完全"清理,它可以收回更多空间,并且需要更长时间和表上的排他锁。这种方法还需要额外的磁盘空间,因为它会创建该表的一个新拷贝,并且在操作完成之前都不会释放旧的拷贝。通常这种方法只用于需要从表中收回数量庞大的空间时。

FREEZE

选择激进的元组"冻结"。指定FREEZE 等价于参数vacuum_freeze_min_age和 vacuum_freeze_table_age设置为0的 VACUUM。当表被重写时总是会执行激进的冻结, 因此指定FULL时这个选项是多余的。

VERBOSE

为每个表打印一份详细的清理活动报告。

ANALYZE

更新优化器用以决定最有效执行一个查询的方法的统计信息。

DISABLE_PAGE_SKIPPING

通常,VACUUM将基于可见性映射跳过页面。已知所有元组都被冻结的页面总是会被跳过,而那些所有元组对所有事务都可见的页面则可能会被跳过(除非执行的是激进的清理)。此外,除非在执行激进的清理时,一些页面也可能会被跳过,这样可避免等待其他页面完成对其使用。这个选项禁用所有的跳过页面的行为,其意图是只在可见性映射内容值得怀疑时使用,这种情况只有在硬件或者软件问题导致数据库损坏时才会发生。

table_name

要清理的表的名称(可以有模式修饰)。缺省时是当前数据库中的所有表。

column_name

要分析的指定列的名称。缺省是所有列。如果指定了一个列的列表,则隐含了ANALYZE。

输出

如果声明了VERBOSE,VACUUM会发出进度消息来表明当前正在处理哪个表。各种有关这些表的统计信息也会打印出来。

注意

要清理一个表,操作者通常必须是表的拥有者或者超级用户。但是,数据库拥有者被允许清理他们的数据库中除了共享目录之外的所有表(对于共享目录的限制意味着一个真正的数据库范围的VACUUM只能被超级用户执行)。VACUUM将会跳过执行者不具备清理权限的表。

VACUUM不能在一个事务块内被执行。

们建议经常清理活动的生产数据库(至少每晚一次),以保证移除失效的行。在增加或删除了大量行之后, 对受影响的表执行VACUUM ANALYZE命令是一个很好的做法。这样做将把最近的更改更新到系统目录,并且允PostgreSQL查询规划器在规划用户查询时做出更好的选择。

VACUUM会导致I/O流量的大幅度增加,这可能导致其他活动会话性能变差。因此,有时建议使用基于代价的清理延迟特性。

[postgresql]postgresql的VACUUM 介绍相关推荐

  1. PostgreSQL中的VACUUM

    最近搞了一个公众号PostgreSQL运维技术,欢迎来踩~ 悄悄放一张: PostgreSQL运维技术 我在之前的一篇介绍MVCC的文章中提到,MVCC有事务ID回卷的问题,它的解决方案是VACUUM ...

  2. PostgreSQL GUC 参数级别介绍

    想不想知道是什么 标签 PostgreSQL , 参数 , 参数级别 背景 在添加GUC参数时,需要注意你添加的参数属于什么类别的参数. 例如如果你想让普通用户能随时修改它,那么你需要将参数级别设置为 ...

  3. PostgreSQL 怎么通过vacuum 加速事务ID回收的速度 (翻译)

    此文为翻译文字原文连接在文字最下方 经历上次transaction id 回收报警的问题后,除了上次总结后,发现对于transaction id 的回收的问题还是处于一个急需在学习的过程,所以有了下面 ...

  4. [postgresql]postgresql的锁介绍

    目录 表级锁 行级锁 页级锁 死锁 咨询锁 表级锁 两个事务在同一时刻不能在同一个表上持有属于相互冲突模式的锁(但是,一个事务决不会和自身冲突.例如,它可以在同一个表上获得ACCESS EXCLUSI ...

  5. Postgresql垃圾回收Vacuum优化手册

    1 Vacuum启动频率太低 参数 建议 autovacuum_vacuum_scale_factor 当update,delete的tuples数量超过 autovacuum_vacuum_scal ...

  6. Postgresql 的 pg_notify 方法介绍

    2019独角兽企业重金招聘Python工程师标准>>> 今日看了这篇博文: https://medium.com/namely-labs/syncing-cache-with-pos ...

  7. [postgresql] postgresql 安装

    APT安装 sudo apt-get install postgresql postgresql-client-common (注: 我的机器会卡死在 "正在设置 postgres92 (9 ...

  8. [postgresql]postgresql自定义函数查询ETL作业依赖的实例

    --------------------------------------------------- ---需求:查找ETL依赖关系 ---描述:根据作业ID,查找上游依赖的作业ID ---依赖表结 ...

  9. [postgresql]postgresql的聚合函数sql实例

    drop table if exists tree_test; CREATE TABLE tree_test ( id character varying(3), pid character vary ...

最新文章

  1. VS2015平台编译mini-caffe
  2. vb.net播放avi动画
  3. P2P平台选择网关支付、第三方托管、第三方+银行联合托管有什么区别?
  4. Gartner:新安全环境对虚拟化和云计算提出更高要求
  5. Database specific hint in One order search
  6. 猪八戒背媳妇用计算机弹出来,猪八戒背媳妇?杭城游泳馆爆笑一幕:浙大学霸果然机智!...
  7. JavaScript-获得和设置表单的值
  8. 如何修改WP文章字体格式、字号大小、字体颜色
  9. [BI项目记]-搭建代码管理环境之客户端
  10. Python学习笔记(1):初体验
  11. uva 1585 Score(Uva-1585)
  12. 三个精致的钢琴音源 Native Instruments Definitive Piano Collection
  13. 中国油用牡丹行业需求状况及产销规模预测报告(新版)2022-2027年
  14. ecu故障现象_案例-报ECU系统软件重置故障处理方案
  15. 为什么这么多学生讨厌数学(以及如何解决它)?
  16. maven lastUpdated 文件清理脚本
  17. QGraphicItem实现中心旋转
  18. 下列属于计算机网络主要性能指标的有( ),下列属于计算机网络性能指标的有A.速率B.带宽C.时延D.误码率...
  19. 4月1起入境泰国取消核酸检测,来曼谷旅游,这6座寺庙必打卡
  20. vue项目中高德地图根据城市名定位到城市中心位置,并在该位置做标记

热门文章

  1. hibernate框架学习笔记2:配置文件详解
  2. 10.leetcode83-Remove Diplicates from Sorted List
  3. OpenCV中Mat,图像二维指针和CxImage类的转换
  4. 原生ajax 和jquery ajax 个人总结
  5. Go Revel - Filters(过滤器链)
  6. flash事件冒泡的理解
  7. 如何选购一款好的人事档案管理系统
  8. 转载 java抽象类与接口的区别
  9. Visual Studio Code如何编写运行C、C++
  10. 单选按钮、复选按钮的简单应用