❶ pg資料庫數據文件111代表什麼
所有資料庫對象都有各自的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_CATALOG2)PG_LARGEOBJECT3)PG_TOAST4)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的物理結構:
.png
1、存儲系統主要包括三個部分:
內存中:buffer,MemoryContext;
數據文件,臨時文件;
日誌文件,日誌緩存。
2、文件和目錄相關作用描述:
.png
.png
3、數據文件結構
.png
3.1、頁
.png
將數據文件中的空間從邏輯上劃分成一個個頁面(數據塊)。頁面是資料庫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.
.png
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
.png
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的出現位置不固定,只在在創建資料庫對象的時候才分配。
.png
三、邏輯與物理存儲關系
1、邏輯關系存在表空間;
2、表空間存在對應的數據文件中;
新創建的資料庫對應的數據文件的名稱:
Catalog表空間 – databasename.dbfSystem表空間 – Udatabasename.dbfTemp表空間-- Tdatabasename.dbf
前面加 「U」 前綴代表用戶數據表空間,用於保存用戶表的數據。
不帶 U 代表 是系統表的表空間,用於保存系統表的數據。
U 前綴的數據文件代表的表空間名為PG。
不帶U 的數據文件代表的表空間為 CATALOG。
四、資料庫文件、表空間、其他文件之間的關系
1、關系圖如下:
.png
說明:
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系統表中查詢得出。
❷ SQL 2005的數據以頁為基本儲存單位,頁的大小多少
在 SQL Server 中,頁的大小為 8 KB
❸ 在SQL中,數據頁的大小是8KB。某資料庫表有1000行數據,每行需要5000位元組空間
每行5000位元組的話,每個數據頁就只能存儲1行,因為行不能跨頁。所以1000行就會佔用1000個數據頁,每個頁面8K,那總的存儲空間就是8000KB
❹ sqlserver2019每個數據文件的基本存儲單位大小
sqlserver2019每個數據文件的基本存儲單位為8KB。根據查詢相關公開信息,數據文件的初始存儲大小為13MB,每個數據文件的基本存儲單位的大小是8KB,每1MB數據文件可以容納128頁,頁是sqlserver2019中用於數據存儲的最基本單位。
❺ 資料庫中,數據文件存儲的基本單位是什麼大小是多少
資料庫系統中,存取數據的基本單位是數據項。
❻ 資料庫頁面大小指的什麼
簡單的說就是最小I/O讀取大小
就像你讀書要一個字一個字地看
頁面大小就是這一個個的字
而你認字不能拆分成一橫一豎什麼的
電腦很笨 你必須告訴它 一次讀多少
這個頁就是告訴它讀這么多
資料庫頁是用自己的格式把數據記錄在指定的大小內 組合起來就是行 行組合起來就是表
不知道說明白沒
❼ 計算機中數據存儲的基本單位有哪些
常用的單位還有KB,MB,GB,TB
1TB=1024GB, 1GB=1024MB, 1MB=1024KB, 1KB=1024B