在乙個dbms系統中,緩衝區經常被使用,用以提高系統的效能。
如,postgresql的「src\backend\utils\cache」下,就有如下檔案:
檔名稱
功能
attoptcache.c
列資訊的快取(表物件的列),資料源自pg_attribute系統表
catcache.c
每個系統表抽象為乙個catalog,對於每個系統表都進行快取,被syscache.c中的函式呼叫,以快取所有的系統表
inval.c
非某個具體的快取。是快取失效排程**
lsyscache.c
非某個具體的快取。是從系統快取(syscache.c)獲取資訊的函式集合,如取得函式名稱,如取得乙個表的列數
plancache.c
查詢計畫快取,對於查詢計畫,如果能復用,可以節約查詢計畫的生成時間。pg提供了查詢計畫快取機制,很多資料庫還有「結果集快取」,目的是為了減少資料庫的邏輯操作
relcache.c
系統檔案快取,如全域性的「global」資料庫的資訊
系統檔案快取的輔助檔案,做一些檔案的載入、關閉系統時的寫出等操作
spccache.c
表空間快取,對於表空間資訊快取(tablespace)進行的管理
syscache.c
快取所有的系統表(可關注initcatalogcache函式、cacheinfo結構。所有需要被快取的系統表,都在cacheinfo結構中註冊)。系統表使用的介面都在本檔案中定義
ts_cache.c
全文檢索快取,對於全文檢索快取管理的支援
typcache.c
資料型別快取,資料**於pg_type系統表(記錄系統提供的資料型別和使用者自定義的型別)
深入理解緩衝區(四)
在乙個dbms系統中,緩衝區經常被使用,用以提高系統的效能。如,postgresql的 src backend utils cache 下,就有如下檔案 檔名稱 功能 attoptcache.c 列資訊的快取 表物件的列 資料源自pg attribute系統表 catcache.c 每個系統表抽象為...
深入理解緩衝區(九)
4.1.4.3 內外存位址是如何對映的 1 快取對應的內外存的對映關係 typedef struct buftag relfilenode rnode physical relation identifier 資料庫物件的位置標識,具體說明見下 forknumber forknum 可以檢視 rel...
深入理解緩衝區(二)
池,停水曰池。廣韻 所以,池,能蓄積物。引申後,池能蓄積執行緒,則稱之為執行緒池 池能蓄積程序則稱之為程序池。另外常見的還有資料庫連線池 iis6.0 中的位址池 記憶體池 1 等等。其中,記憶體池的概念,類似緩衝區。我這裡討論的,著重於 postgresql 資料庫系統的實現例項。cache 偏於...