Postgresql create index,vacuum和cluster进度报告

2023-10-20 13:10

本文主要是介绍Postgresql create index,vacuum和cluster进度报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.CREATE INDEX 进度报告

可查看pg_stat_progress_create_index视图,如下
在这里插入图片描述
创建索引可以观察的阶段
在这里插入图片描述
实例:

#建表插入测试数据
hank=> create table tbl_idx_tb01 (a int,b text);
CREATE TABLE
hank=> insert into tbl_idx_tb01 select t,'hank_' ||t from generate_series(1,11000000) t;
INSERT 0 11000000
hank=> create index CONCURRENTLY idx_tb01_a  on tbl_idx_tb01 (a);
CREATE INDEX
hank=> drop index idx_tb01_a;
DROP INDEX
hank=> create index idx_tb01_a  on tbl_idx_tb01 (a);
CREATE INDEX#另外开启一个session,进入数据库观察视图
select * from pg_stat_progress_create_index;
\watch 0.1
Wed 31 Mar 2021 04:56:17 PM CST (every 0.1s)-[ RECORD 1 ]------+---------------------------------------
pid                | 1263
datid              | 16450
datname            | hank
relid              | 16959
index_relid        | 0
command            | CREATE INDEX
phase              | building index: loading tuples in tree
lockers_total      | 0
lockers_done       | 0
current_locker_pid | 0
blocks_total       | 0
blocks_done        | 0
tuples_total       | 11000000
tuples_done        | 11000000
partitions_total   | 0
partitions_done    | 0#通过观察视图可以看到先扫面block然后再扫面的tuples,而且加了CONCURRENTLY,是扫描两次
2.VACUUM进度报告

在做vacuum的时候,可以观察pg_stat_progress_vacuum视图,但是 VACUUM FULL 的时候要看pg_stat_progress_cluster,因为ACUUM FULL和 CLUSTER操作都会重写表。
在这里插入图片描述
vacuum 可以观察到的几个阶段如下:
在这里插入图片描述
实例如下:

#删除数据,做vacuum观察视图
hank=> delete from tbl_idx_tb01;
DELETE 11000000
hank=> \dt+ tbl_idx_tb01List of relationsSchema |     Name     | Type  | Owner |  Size   | Description 
--------+--------------+-------+-------+---------+-------------hank   | tbl_idx_tb01 | table | hank  | 4295 MB | 
(1 row)hank=> vacuum ANALYZE tbl_idx_tb01 ;
VACUUM#另外开启一个session,执行如下语句
select * from pg_stat_progress_vacuum;
\watch 0.1
扫描阶段
Wed 31 Mar 2021 05:09:50 PM CST (every 0.1s)-[ RECORD 1 ]------+--------------
pid                | 1263
datid              | 16450
datname            | hank
relid              | 16959
phase              | scanning heap
heap_blks_total    | 549637
heap_blks_scanned  | 518346
heap_blks_vacuumed | 0
index_vacuum_count | 0
max_dead_tuples    | 89478485
num_dead_tuples    | 6087469
Wed 31 Mar 2021 05:10:00 PM CST (every 0.1s)#vacuuming indexes阶段发生在scanning heap之后,每次vacuum至少发生一次,当maintenance_work_mem 不足以存放dead tuples的时候,会发生多次。
-[ RECORD 1 ]------+------------------
pid                | 1263
datid              | 16450
datname            | hank
relid              | 16959
phase              | vacuuming indexes
heap_blks_total    | 549637
heap_blks_scanned  | 549637
heap_blks_vacuumed | 0
index_vacuum_count | 0
max_dead_tuples    | 89478485
num_dead_tuples    | 11000000
Wed 31 Mar 2021 05:10:31 PM CST (every 0.1s)#清理数据,返回空页给系统
-[ RECORD 1 ]------+----------------
pid                | 1263
datid              | 16450
datname            | hank
relid              | 16959
phase              | truncating heap
heap_blks_total    | 549637
heap_blks_scanned  | 549637
heap_blks_vacuumed | 549637
index_vacuum_count | 1
max_dead_tuples    | 89478485
num_dead_tuples    | 11000000
3.CLUSTER进度报告

当发生 CLUSTER 或者 VACUUM FULL的时候可以观察如下视图
pg_stat_progress_cluster
在这里插入图片描述
cluster和vacuum full阶段介绍如下
在这里插入图片描述
篇幅原因,不再测试。通过以上视图,除了观察内部执行的阶段,还可以估算大概执行到哪一步,还需要多长时间。

参考:https://www.postgresql.org/docs/12/progress-reporting.html

这篇关于Postgresql create index,vacuum和cluster进度报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247284

相关文章

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多