postgresql 資料庫是由一系列位於檔案系統上的物理檔案
組成。在資料庫執行過程中,管理這些物理檔案。通常這些物理檔案稱為資料庫。
在postgresql中有乙個資料庫集簇(database cluster)的概念,它是指由單個postgresql伺服器例項管理的資料庫集合,組成資料庫集簇的這些資料庫使用相同的全域性配置檔案和監聽埠、公用程序和記憶體結構
1.1 邏輯儲存結構
資料庫本身也是資料庫物件,乙個資料庫集簇可以包含多個database、多個user。每個database以及database中的所有物件都有他們的所有者即user.
建立乙個database時會為這個database建立乙個名為public的預設schema
。每個database可以有多個schema。 可以將schema理解為命名空間。不同的schema可以有相同的table、index、view等。
1.2 物理儲存結構
資料庫的檔案預設儲存在initdb時建立的資料庫目錄中。
目錄用途
base
包含每個資料庫對應的子目錄的子目錄
檔案用途
pg_version
postgresql主版本號檔案
pg_hba.conf
客戶端認證控制檔案
postgresql.conf
引數檔案
1.2.1 資料檔案布局
(oid)
postgresql中的所有資料庫物件都由各自的物件識別符號(oid)進行內部管理,它們是無符號的4個位元組整數。
資料庫的oid儲存在pg_database
系統表中。
資料庫中的表、索引、序列等物件的oid儲存在pg_class系統表中:
(二)、表空間在postgresql中最大的邏輯儲存單位是表空間,資料庫中建立的物件都儲存在表空間中。在建立資料庫物件時,可以指定資料庫物件的表空間,如果不指定則使用預設。
在初始化資料庫目錄時會自動建立pg_default
和pg_global
兩個表空間。
(三)、表檔案內部結構
在postgresql
中,將儲存在磁碟中的塊稱為page
,而將記憶體中的塊稱為buffer
。 表和索引稱為relation
,行稱為tuple
。資料的讀寫是以page
為最小單位,每個page
預設大小為8kb
。 在編譯postgresql時指定blcksz
大小決定page
的大小。每個表檔案由多個blcksz
位元組大小的page組成,每個page包含若干tuple.對於i/o效能較好的硬體,並且以分析為主的資料庫,適當增加blcksz大小可以小幅度提公升資料庫效能。
當從資料庫中檢索資料時有兩種典型的訪問方式:順序掃瞄和b樹索引掃瞄。
PostgreSQL資料庫系列之十二 許可權管理
當初始化pg資料庫後,它自動有會有乙個超級使用者,通常這個超級使用者的名稱與初始化pg資料庫時的作業系統使用者名稱相同。比如你在windows作業系統裡以administrator管理員部署,那麼pg資料庫也將會有乙個administrator 大小寫嚴格區分 超級使用者作為超級管理員。通常來說,d...
postgresql之儲存過程
特性 儲存過程舉例 1 引數列表只包含函式輸入引數,不包含輸出引數 儲存過程定義 create or replace function add a integer,b numeric returns numeric as select a b language sql 呼叫方法 select add...
第二章 PostgreSQL程序和記憶體體系結構
悄悄放一張 postgresql運維技術 本章總結了postgresql的程序架構和記憶體架構。postgresql是乙個客戶端 伺服器型別的關聯式資料庫管理系統,具有多程序架構,執行在單個主機上。多個程序協同管理乙個資料庫集群通常被稱為 postgresql server 它包含以下型別的程序 b...