PostgreSQL技术大讲堂 - 第17讲:Vacuum空间管理工具

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: PostgreSQL从小白到专家,技术大讲堂 - 第17讲:Vacuum空间管理工具

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

Part 17:Vacuum空间管理工具

内容1:VACUUM 概述

内容2:可见性地图作用

内容3:冻结处理

内容4:Autovacuum daemon

内容5:Full VACUUM

 

VACUUM概述

· VACUUM概述Vacuum处理对数据库中的指定表或所有表执行以下任务:

1、移除死元组

删除死元组并对每个页面的活元组进行碎片整理。

删除指向死元组的索引元组。

2、冷冻老的Txid

必要时冻结老元组的Txid 更新冻结的与系统目录(pg_database和pg_class)相关的txid

如有可能,移除clog中不必要的部分

3、其他

更新已处理表的FSM和VM。

更新几个统计数据(pg_stat_all_tables等)

 

VACUUM处理流程

· VACUUM 处理流程

(1) 从指定的表中获取每个表。

(2) 获取表的ShareUpdateExclusiveLock锁。此锁允许读取其他事务。

(3) 扫描所有页面以获取所有死元组,必要时冻结旧元组。

(4) 如果存在,则移除指向相应死元组的索引元组。

(5) 对表的每一页执行以下步骤(6)和(7)。

(6) 移除死元组并重新分配页面中的活元组。

(7) 更新目标表的相应FSM和VM。

(8) 如果最后一页没有元组,则截断最后一页u003c/p>

(9) 更新与目标表的真空处理相关的统计信息和系统目录。

(10) 更新与真空处理相关的统计数据和系统目录。

(11) 如果可能的话,删除不必要的文件和clog的页面

· 第一步

执行冻结处理并删除指向死元组的索引元组

1、扫描目标表,创建死元组列表

2、通过死元组列表删除索引元组,即“清理阶段”

3、如此循环,直到清完为止

· 清理操作流程

· 第二步

更新与每个目标表的真空处理相关的统计信息和系统目录。

此外,如果最后一页没有元组,则从表文件中将其截断。

如果可能的话,它会删除不必要的clog部分

 

可见性地图

· 提高vacuum的效率

可见性地图用来记录含有被删除行的数据块id,以提供给vacuum参考。

 

冻结处理

· 冻结处理流程

冻结处理有两种模式:

lazy mode(惰性模式)

eager mode(急切模式)

 

删除不需要的clog文件

· 删除clog文件

 

Autovacuum Daemon

· Autovacuum 守护进程

默认每分钟执行一次,由autovacuum_naptime参数定义。

默认调用三个worker进程进行工作,由autovacuum_max_workers参数定义。

 

Full VACUUM

· Full VACUUM

· Full VACUUM 处理流程

什么时候需要FULL VACUUM?

testdb=# CREATE EXTENSION pg_freespacemap;

CREATE EXTENSION

testdb=# SELECT count(*) as "number of pages",

pg_size_pretty(cast(avg(avail) as bigint)) as "Av. freespace size",

round(100 * avg(avail)/8192 ,2) as "Av. freespace ratio"

FROM pg_freespace('accounts');

number of pages | Av. freespace size | Av. freespace ratio

-----------------+--------------------+---------------------

1640 | 99 bytes | 1.21


FULL VACUUM示例(一)

testdb=# DELETE FROM accounts WHERE aid %10 != 0 OR aid < 100;

DELETE 90009

testdb=# VACUUM accounts;

VACUUM

testdb=# SELECT count(*) as "number of pages",

pg_size_pretty(cast(avg(avail) as bigint)) as "Av. freespace size",

round(100 * avg(avail)/8192 ,2) as "Av. freespace ratio"

FROM pg_freespace('accounts');

number of pages | Av. freespace size | Av. freespace ratio

-----------------+--------------------+---------------------

1640 | 7124 bytes | 86.97

(1 row)


FULL VACUUM示例(二)

testdb=# SELECT *, round(100 * avail/8192 ,2) as "freespace ratio"

FROM pg_freespace('accounts');

blkno | avail | freespace ratio

-------+-------+-----------------

0 | 7904 | 96.00

1 | 7520 | 91.00

2 | 7136 | 87.00

3 | 7136 | 87.00

4 | 7136 | 87.00

5 | 7136 | 87.00


FULL VACUUM示例(三)

testdb=# VACUUM FULL accounts;

VACUUM

testdb=# SELECT count(*) as "number of blocks",

pg_size_pretty(cast(avg(avail) as bigint)) as "Av. freespace size",

round(100 * avg(avail)/8192 ,2) as "Av. freespace ratio"

FROM pg_freespace('accounts');

number of pages | Av. freespace size | Av. freespace ratio

-----------------+--------------------+---------------------

164 | 0 bytes | 0.00

(1 row)


以上就是Part 17 - Vacuum空间管理工具 的内容,欢迎进群一起进钉钉群交流358,22,460,往期视频也可联系cuug客服观看

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
开发者视角看云原生数据库一体化技术趋势
随着云原生数据库技术的不断发展,一体化数据库解决方案成为技术圈的热点,云原生数据库一体化技术是当前数据库领域的重要趋势,对于开发者而言,学习理解和应对这一趋势,对于业务开发的成功实施非常重要。比如,阿里云瑶池数据库和PolarDB-X等产品通过离在线一体化、处理分析一体化和集中分布一体化等创新理念,引领了数据库领域的新变革。那么本文就来从开发者的角度探讨云原生数据库一体化技术趋势,并分析在业务处理分析一体化、集中式与分布式数据库边界模糊和云原生一体化数据库的选择等方面的影响。
190 4
|
1月前
|
关系型数据库 Java 数据库连接
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
108 3
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
77 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
28天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
78 0
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)(一)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)
30 0
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
42 1
|
1月前
|
Cloud Native OLAP OLTP
如何看待云原生数据库一体化的技术趋势?
面对业务处理分析一体化,开发者需平衡OLTP和OLAP数据库需求。关键在于理解业务目标,选择适合的数据库:OLTP注重高并发、低延迟,如MySQL、PostgreSQL;OLAP侧重复杂查询和数据聚合,如Greenplum、ClickHouse。云原生数据库提供弹性扩展和容灾能力。数据同步、一致性、安全性和合规性也是重要考量因素。开发者应持续关注新技术,以适应不断变化的业务需求。
|
3月前
|
关系型数据库 分布式数据库 数据库
业界声音|PolarDB最值得关注的技术创新有哪些?
"PolarDB一路走来,见证了国产数据库发展的不平凡之路。"
业界声音|PolarDB最值得关注的技术创新有哪些?