深入理解緩衝區(四)

2021-08-26 06:08:15 字數 901 閱讀 6971

在乙個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 偏於...