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

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

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > pg大講堂 > PostgreSQL技術大講堂 - 第15講:數據文件與塊存儲結構

PostgreSQL技術大講堂 - 第15講:數據文件與塊存儲結構

文章來源: 更新時間:2023/4/27 13:51:06

在線老師點擊咨詢:

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

我要咨詢

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色權限、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。

Part 15:數據文件與塊存儲結構

內容1:表的OID與數據文件對應關系

內容2:PostgreSQL數據文件存儲方式

內容3:數據文件、空閑空間地圖和可見性地圖

內容4:塊空間使用方法


對象OID與數據文件對應關系

· PG數據庫的一張表或者索引對應一個數據文件。與Oracle集中式的存儲方式不同,各有優缺點

· 作為數據庫對象的表和索引在內部由各個oid管理,而這些數據文件則由變量relfilenode管理。

· 表和索引的relfilenode值開始時基本上(但并不總是)與相應的oid匹配

sampledb=# SELECT relname, oid, relfilenode FROM pg_class WHERE relname = 'sampletbl';

relname | oid | relfilenode

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

sampletbl | 18740 | 18740

(1 row)

· 相關表的數據文件路徑:

$ cd $PGDATA

$ ls -la base/16384/18740

-rw------- 1 postgres postgres 8192 Apr 21 10:21 base/16384/18740

· TRUNCATE、REINDEX、CLUSTER等操作會造成relfilenode號的改變,因為先刪除原來的數據文件,再創建一個新的會更快。

sampledb=# SELECT relname, oid, relfilenode FROM pg_class WHERE relname = 'sampletbl';

relname | oid | relfilenode

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

sampletbl | 18740 | 18812

(1 row)

· 使用內置函數pg_relation_file path查看表的文件路徑:

sampledb=# SELECT pg_relation_filepath('sampletbl');

pg_relation_filepath

----------------------

base/16384/18812

(1 row)

· 文件尺寸超過1GB后,新文件的產生規則:

$ cd $PGDATA

$ ls -la -h base/16384/19427*

-rw------- 1 data/base/16384/19427

-rw------- 1 data/base/16384/19427.1


相關聯的其它數據文件

· 空閑空間地圖和可見性地圖(‘_fsm’和‘_vm’):

$ cd $PGDATA

$ ls -la base/16384/18751*

-rw------- 1 base/16384/18751

-rw------- 1 base/16384/18751_fsm

-rw------- 1 base/16384/18751_vm

· 當insert操作時空閑空間文件用來查看哪些數據塊有空閑空間存放新行

· 當進行vacuum操作時可見性地圖文件用來提高操作的效率

· 相關的三類文件在內部稱為每個關系的分岔(fork);數據文件的fork號為0、空閑空間文件fork號為1,可見性地圖文件的fork號為2。


數據塊內部結構

· 數據文件內部布局

固定長度的頁(或塊),默認值為8192字節(8kb)

頁面的內部布局取決于數據文件類型

· 表中的頁包含以下三種數據:

header data -由page header data結構定義的頭數據在頁面的開頭分配。它的長度為24字節,包含有關該頁的一般信息。結構的主要變量如下頁所述。

line pointer(s) -行指針為4字節長,并保存指向每個堆行的指針。它也被稱為項指針。行指針形成一個簡單的數組,它起到元組索引的作用。每個索引從1開始按順序編號,稱為偏移量編號。當一個新的行被添加到頁面中時,一個新的行指針也被推到數組中以指向新的行

heap tuple(s) -堆元組(行)是記錄數據本身。它們從頁面底部開始按順序堆疊。因為PostgreSQL需要同時了解并發控制(CC)和WAL。


INSERT操作

· Writing Heap Tuples:


UPDATE操作

· 更新一行記錄:

update操作時,數據庫的操作過程是先delete后insert,被刪除的行空間不會立刻釋放,vacuum操作時會釋放。


讀操作

· Reading Heap Tuples:

以上就是Part 15 - PostgreSQL 數據文件和塊存儲結構 的內容,歡迎進群一起探討交流QQ交流群:752027153微信交流群:聯系客服拉你進微信PG交流群釘釘交流群:35822460,釘釘群專門有視頻講解

本文地址:http://www.mudan321.com/pgdjt/33882427491.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