学无先后达者为师!
不忘初心,砥砺前行。

PostgreSQL 查看 VACUUM 操作的执行进度

在 PostgreSQL 中,VACUUM 是一个用于清理数据库的命令。它的主要作用是回收不再使用的空间,从而优化数据库的性能。VACUUM 会执行以下操作:

  1. 回收空间:删除已删除行的空间,使其可以被后续的插入操作重用。
  2. 更新统计信息:更新表的统计信息,以帮助查询优化器做出更好的执行计划。
  3. 防止事务 ID 溢出:在 PostgreSQL 中,每个事务都有一个唯一的 ID,VACUUM 可以帮助防止这些 ID 溢出,从而导致数据库出现问题。

VACUUM 有两种主要形式:

  • 普通 VACUUM:只会回收空间,不会阻止其他事务的执行。
  • VACUUM FULL:会锁定表,重建表并回收所有未使用的空间,通常会释放大量的磁盘空间,但会导致更长的锁定时间。

使用 VACUUM 可以帮助保持数据库的性能和稳定性,特别是在频繁进行插入、更新和删除操作的环境中。

如果想要获取 VACUUM 的执行状态,可以使用以下 SQL 语句:

SELECT 
    c.relname AS table_name,-- 表名
    ROUND((p.heap_blks_scanned::numeric / p.heap_blks_total * 100), 2) AS scanned, -- 扫描进度
    ROUND((p.heap_blks_vacuumed::numeric / p.heap_blks_total * 100), 2) AS vacuumed, -- 整理进度
    p.*
FROM 
    pg_stat_progress_vacuum p
JOIN 
    pg_class c ON p.relid = c.oid
WHERE 
    c.relkind = 'r'
		ORDER BY  c.relname
		; 

赞(0) 打赏
未经允许不得转载:码农很忙 » PostgreSQL 查看 VACUUM 操作的执行进度

评论 抢沙发

给作者买杯咖啡

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册