顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > pg大講堂 > PostgreSQL技術大講堂 - 第17講:Vacuum空間管理工具

PostgreSQL技術大講堂 - 第17講:Vacuum空間管理工具

文章來源: 更新時間:2023/5/23 15:12:16

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

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空間管理工具 的內容,歡迎進群一起探討交流QQ交流群:752027153微信交流群:聯系客服拉你進微信PG交流群釘釘交流群:35822460,釘釘群專門有視頻講解

本文地址:http://m.mudan321.com/pgdjt/34107554369.html 轉載請注明!


PostgreSQL入門到精通 100+ 個學習資料

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
地址:北京市海淀區田村山南路35號院17號樓
課程咨詢: 400-0909-964
企業服務:137 1818 8639(陳經理)
部分信息來源于網絡,如有錯誤請聯系指正!
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1