成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

超詳細的PG數據存儲結構:邏輯結構和物理存儲總結

數據庫
今天主要講講PG的數據結構,PG數據存儲結構分為:邏輯結構和物理存儲。其中邏輯存儲結構是內部的組織和管理數據的方式。物理存儲結構是操作系統中組織和管理數據的方式。邏輯存儲結構適用于不同的操作系統和硬件平臺。

概述

今天主要講講PG的數據結構,PG數據存儲結構分為:邏輯結構和物理存儲。

[[272824]]

其中邏輯存儲結構是內部的組織和管理數據的方式。物理存儲結構是操作系統中組織和管理數據的方式。邏輯存儲結構適用于不同的操作系統和硬件平臺。

一、邏輯存儲結構

邏輯結構包括:

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

所有數據庫對象都有各自的oid(object identifiers),oid是一個無符號的四字節整數,相關對象的oid都存放在相關的system catalog表中,比如數據庫的oid和表的oid分別存放在pg_database,pg_class表中。

1、數據庫集群-Database cluster

2、數據庫-Database

3、表空間-tablespace

數據庫在邏輯上分成多個存儲單元,稱作表空間。表空間用作把邏輯上相關的結構放在一起。數據庫邏輯上是由一個或多個表空間組成。

新創建的數據庫默認創建下面的表空間:

1)Catalog表空間 存放系統表信息

2)System表空間 存放用戶數據3)Temp表空間

4、模式-Schema

自動創建的系統模式如下:

1)PG_CATALOG

2)PG_LARGEOBJECT

3)PG_TOAST

4)PG_PARTITION

默認的用戶模式PUBLIC。

5、段-segment

6、區-extent

7、塊-block

8、數據庫對象-Database object

1)模式對象表、索引、序列、大對象、視圖、函數、存儲過程、觸發器、包 … …

2)非模式對象用戶、數據庫

9、數據表-Table

10、索引-Index

11、序列-Sequence

12、視圖-View

二、物理存儲結構

在執行initdb的時候會初始化一個目錄,通常我們都會在系統配置相關的環境變量$PGDATA來表示,初始化完成后,會再這個目錄生成相關的子目錄以及一些文件。在postgresql中,tablespace的概念并不同于其他關系型數據庫,這里一個tablespace對應的都是一個目錄。如下圖就是PG的物理結構:

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

1、存儲系統主要包括三個部分:

內存中:buffer,MemoryContext;

數據文件,臨時文件;

日志文件,日志緩存。

2、文件和目錄相關作用描述:

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

 

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

3、數據文件結構

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

3.1、頁

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

將數據文件中的空間從邏輯上劃分成一個個頁面(數據塊)。頁面是數據庫I/O的基本單位,即只能整頁讀寫數據文件, 頁面的大小默認是8K。

頁面可以分成兩種:

1)數據頁面:數據頁面是用來存儲用戶數據的。

2)控制頁面:控制頁面用來管理這些數據頁面。

數據庫共享緩存中的空間劃分也是按頁為基本單位, 一個頁的大小與數據文件中頁的大小一致, 這樣便于整頁讀取數據文件,并放入到數據庫Buffer中, 從Buffer寫入數據文件也同理,保證了緩存與數據文件結構和內容上的一致性。

3.2、Block(塊)

概念上基本等同于Page, 但Block更多用于說明DMS中對數據文件中Page的描述。

例如: 對文件的讀寫的操作, 文件讀寫位置的定位, 數據文件空間回收等操作, 單位均是以塊進行。

數據塊的大小在系統初始化時指定,默認是8K,可以取值4K,8K,16K,32K。

3.3、Extent(區)

把數據文件中8個連續的Page構成的空間稱為一個Extent。Extent是數據庫進行數據文件空間分配/釋放的基本單位。每個表、索引、序列對象都是由若干個區組成。數據文件被創建后,除自動保留部分區作為控制區外,其他區全部處于未分配狀態。表、索引、序列對象的所有數據都存放在Extent中,當向這些Extent中插入數據時,若該Extent的所有頁面都已占滿,系統就會自動在所屬表空間的數據文件中尋找一個尚未分配的區,并將其狀態修改為數據區。

3.4、控制頁面

用于空間管理的控制頁面:PFS/GAM/IAM。

用于增量備份的控制頁面:DCM。

判斷可見性的控制頁面:VM。

預留的控制頁面:BCM/SGAM。

3.5、PFS

Page Free Space,簡稱PFS頁.

用于記錄本數據文件中頁面的空間使用情況。對文件中的每個頁面,PFS中都有一個“字節”與之對應,該字節記錄了該頁面的狀態。

PFS頁前64bytes被預留為頁頭, 剩下81024-64=8128一共覆蓋81288K=64MB空間.

故PFS頁每隔8128個頁面出現一次, 系統初始化把第一個PFS頁放在數據文件的第二個頁面位置,即:第1號數據頁面, 由此可知,第N個PFS頁的位置在8128*N+1.

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

3.6、GAM

Global Allocation Map,簡稱GAM頁。

功能:記錄所在數據文件的Extent的分配情況,GAM頁中除GAM頭外,剩下空間的每一位(bit)均對應一個Extent的分配情況。若某bit位為1,則表明該bit位所關聯的Extent已被分配出去,反之未被分配。

若一個GAM頁面大小為8K,則除GAM頭(64 bytes)外,一個GAM頁面所能覆蓋的文件范圍是: (81024-64)8(88K),約4GB空間。此外,GAM頁每隔881288個頁面出現一個,系統要求第一個GAM頁出現在文件的第3個頁面位置(即:第2個索引位置),由此得知,第N個GAM頁的出現位置是: 881288*N+2

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

3.7、IAM

Index Allocation Map,簡稱IAM頁。

功能:每個IAM頁只隸屬于一個數據庫對象(例如:表),但一個數據庫對象可包含多個IAM頁,由此可見IAM頁與數據庫對象的關系是1對1,而數據庫對象與IAM頁的關系是1對多.

IAM的結構與GAM頁類似,除IAM頭外,剩下空間的每一位(bit)均對應著一個與IAM相關的Extent。若某bit位為1,則表明該bit位所關聯的Extent已被分配給該IAM,反之未被分配。若一個IAM頁面大小為8K,則除IAM頭(64 bytes)外,一個IAM頁面所能覆蓋的文件范圍是: (81024-64)8(88K),約4GB空間。

但與GAM也不同之處在于:IAM的出現位置不固定,只在在創建數據庫對象的時候才分配。

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

三、邏輯與物理存儲關系

1、邏輯關系存在表空間;

2、表空間存在對應的數據文件中;

新創建的數據庫對應的數據文件的名稱:

Catalog表空間 – databasename.dbf

System表空間 – Udatabasename.dbf

Temp表空間-- Tdatabasename.dbf

  • 前面加 “U” 前綴代表用戶數據表空間,用于保存用戶表的數據。
  • 不帶 U 代表 是系統表的表空間,用于保存系統表的數據。
  • U 前綴的數據文件代表的表空間名為PG。
  • 不帶U 的數據文件代表的表空間為 CATALOG。

四、數據庫文件、表空間、其他文件之間的關系

1、關系圖如下:

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

說明:

1)每一個數據庫具有一個或多個數據文件,用戶存放數據庫的所有數據。

2)數據庫的數據文件有以下特征:

  • 一個數據庫文件只能與一個數據庫的一個表空間相連。
  • 一個表空間可以由多個數據文件組成。

3)數據庫對象與文件關系:

  • 數據庫對象放到表空間中。
  • 表空間有多個數據文件。
  • 表空間中有多個數據庫對象。

4)數據庫對象邏輯上是存儲在表空間中,物理上是存儲在與表空間相關聯的數據文件中。

2、數據庫包含的文件種類:

1)數據庫文件:data/DB

數據庫對象,如:數據庫、表,索引,序列等對象。

2)控制文件:data/CTL

用來記錄數據庫集群的狀態信息,如:版本信息、集群所管理的各種文件信息、檢查點信息、事務狀態信息等。

3)日志文件:data/REDOLOG

記錄數據修改操作的日志,用于系統發生故障時進行數據恢復。

4)臨時文件:data/DB

存放數據庫進行計算的過程中,生成的各種中間對象,如排序運算的外存歸并單元。

5)參數文件:data目錄下

五、Postgresql 底層存儲管理方式:

Postgresql的每個數據庫均存放在一個目錄中,以db_oid命名,該目錄中存放每個表對應的文件,文件名以該數據表對應的relfilenode_oid命名。當表中的數據量足夠大,導致表文件的大小大于1GB的時候,postgresql會自動創建新的文件用于存放新插入的數據。新文件的名稱為: relfilenode_iod.1, relfilenode_iod.2 等。使用該策略是為了防止在某些文件系統中,最大支持文件尺寸不能大于1GB的情形。

db_oid, relfilenode_oid可以從pg_class系統表中查詢得出。

每個table對應的文件內部又按照Page的方式組織。每個Page的大小默認為8KB。所以每個數據庫對應文件的Disk 分布由下圖所示:

超詳細的PG數據存儲結構--邏輯結構和物理存儲總結,值得收藏

每個Page中包含Page Header以及Data段,Page Header中,pg_lower指向Free Space的起始地址,pg_upper指向Free Space的結束地址。

  • Data 段中,包含有: ItemIdData 段,Free Space段, Items段 以及Special space段。
  • ItemIdData 段: Array of (offset,length) pairs pointing to the actual items. 4 bytes per item.
  • Free Space 段:The unallocated space. New item pointers are allocated from the start of this area, new items from the end.
  • Items 段: The actual items themselves.
  • Special space 段: Index access method specific data. Different methods store different data. Empty in ordinary tables.
  • Item的存儲是從pg_upper向pg_lower(類似堆)方向增長。ItenIdData的存儲是從pg_lower向pg_upper方向增長(類似棧)。
責任編輯:華軒 來源: 今日頭條
相關推薦

2010-04-21 16:07:04

Oracle邏輯存儲結

2010-04-21 16:55:06

Oracle物理存儲結

2010-04-20 10:58:54

2022-05-24 08:03:28

InnoDBMySQL數據

2009-01-18 15:34:56

數據倉庫邏輯物理結構OLAP

2011-08-03 13:28:08

Oracle數據庫數據庫控制文件

2019-08-05 09:19:45

PG事務隔離級別數據庫

2020-02-18 16:07:17

物聯網表存儲數據庫

2018-06-06 08:54:23

數據結構存儲

2019-07-03 15:14:00

Oracle存儲結構

2018-04-23 09:25:24

MySQL結構存儲

2017-12-15 09:05:55

對象存儲塊存儲文件存儲

2010-04-23 14:18:38

Oracle ROWI

2021-04-20 09:18:41

順序存儲結構

2018-07-20 09:16:04

鏈式存儲結構

2022-09-15 10:51:20

NAS對象存儲存儲

2018-03-15 08:50:46

Hive-數據存儲

2010-04-21 13:40:04

Oracle數據庫

2023-04-13 08:14:53

數據結構算法存儲

2022-10-27 16:07:24

littlefs存儲結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区在线看 | av男人的天堂在线 | 一区二区三区四区在线视频 | 亚洲一区二区高清 | 欧美日韩中文字幕在线 | 一区二区在线不卡 | 一区在线观看视频 | 精品国模一区二区三区欧美 | 四虎免费视频 | 国产精品99久久久久久宅男 | 国产视频一区二区 | 久久69精品久久久久久久电影好 | 免费一级黄色录像 | 欧美日韩国产一区二区三区 | 精品国产一区二区三区久久久蜜月 | 国产在线精品一区二区三区 | 97免费在线视频 | 亚洲日本免费 | 国产精品免费一区二区三区四区 | 日批日韩在线观看 | 国产成人aⅴ | chinese中国真实乱对白 | 日韩国产在线 | 91社区在线观看高清 | 精品国产一区久久 | 国产清纯白嫩初高生视频在线观看 | 免费看91 | 亚洲一区免费在线 | 四虎影院在线免费观看 | 精品国产高清一区二区三区 | 看一级黄色毛片 | 国产高清在线精品一区二区三区 | 在线91| 日韩在线免费视频 | 天堂一区在线观看 | 日韩三级在线 | 涩在线 | 成人精品久久日伦片大全免费 | 能看的av | 久久久久一区二区三区 | 国内精品一区二区三区 |