PostgreSQL中page頁結構
PostgreSQL中page頁結構原始碼解析
在PG中,磁碟儲存和記憶體中的最小管理單位都是page,也是通常所說的block。一般PG頁的大小為8K,在原始碼編譯時可以設定。此後都不可更改,因為許多PG記憶體結構設計都是以此為基礎的。
在一個page中,表的記錄是從page的底部開始儲存,然後慢慢向上漲。Page結構圖如下:
上圖為一個page的結構,主要由5個部分組成:
Page Header:為頁頭,主要儲存LSN,page中空閒空間的開始offset和結束offset等。下面再展開講。
ItemId data:是page中表記錄的索引條目。一個索引條目4個位元組,由兩部分組成:此記錄在page中的offset和記錄長度length。
Free space:是此page中剩餘可用的空間,不算標記為delete後的空間;是指完全沒有被使用的空間,也相當於page中沒有被分配的空間。
Item:就是指表實際儲存的記錄。
Special space: 儲存索引訪問方法(AM: Access Method)資訊,不同的索引訪問方法,內容不一樣。但如果是表的page,那麼這裡是空的,沒有任何資訊。
原始碼在src/backend/storage/page/bufpage.c中,以下為Page的初始化:
Page header 24個位元組說明如下:
PageHeader 原始碼定義如下:
其中,PageXLogRecPtr為一個結構體,64位。記錄xlog資訊的原因:
-
保證buffer manger WAL原則,即寫日誌先於寫資料
-
髒塊checkpoint時,日誌先刷出到disk
總的來講,PG中頁的結構大體上Oracle的Block結構是比較類似的,都是採用向上漲的方式來儲存記錄。但是在小細節上還是分別比較大的。Oracle的Block中還有ITL等事務相關資訊等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30088583/viewspace-1387177/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL Page頁結構解析(1)-基礎SQL
- PostgreSQL Page頁結構解析(3)- 行資料SQL
- PostgreSQL Page頁結構解析(5)- B-Tree索引儲存結構#1SQL索引
- PostgreSQL Page頁結構解析(6)- B-Tree索引儲存結構#2SQL索引
- PostgreSQL Page頁結構解析(7)- B-Tree索引儲存結構#3SQL索引
- PostgreSQL Page頁結構解析(2)- 頁頭和行資料指標SQL指標
- PostgreSQL儲存引擎之page結構SQL儲存引擎
- 如何從零學習PostgreSQL Page結構SQL
- PostgreSQL Page頁結構解析(4)- 執行DML時表佔用空間解析SQL
- PostgreSQL 資料頁Page解析(1)- 基礎SQL
- PostgreSQL 資料頁Page解析(2)- 頁頭和行資料指標SQL指標
- PostgreSQL:物理結構SQL
- PostgreSQL:程式結構SQL
- PostgreSQL 目錄結構SQL
- PostgreSQL:邏輯結構SQL
- postgresql體系結構SQL
- PostgreSQL體系結構概述SQL
- PostgreSQL:記憶體結構SQL記憶體
- 資料結構專題頁(更新中...)資料結構
- PostgreSQL xlog格式之no backup full pageSQL
- PostgreSQL xlog格式之backup full pageSQL
- PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫SQL
- PostgreSQL:原始碼目錄結構SQL原始碼
- 【Mysql】InnoDB 引擎中的資料頁結構MySql
- SQL Server Page資料庫結構深入分析SQLServer資料庫
- router跳轉page頁面
- PostgreSQL DBA(15) - WAL檔案結構SQL
- PostgreSQL DBA(20) - WAL full-page-write淺析SQL
- PostgreSQL如何檢視page、index的詳細資訊SQLIndex
- PostgreSQL索引頁SQL索引
- 【SqlServer】 理解資料庫中的資料頁結構SQLServer資料庫
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- PostgreSQL儲存引擎之heap tuple結構SQL儲存引擎
- InnoDB資料頁結構
- 搭建基礎架構-Page架構
- asp.net中Page.ClientScript.RegisterStartupScript用法小結ASP.NETclient
- Xamarin 學習筆記 - Page(頁面)筆記
- 如何把struts結構中action執行的結果輸出到頁面上