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

相关文章

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

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