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.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 增强版多

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处