Storage

DBMS 中的主要文件組織 - 有序記錄的文件(排序文件)

  • March 3, 2022

“數據庫系統基礎”,第 3 版。由 Elmasri 和 Navathe 撰寫,第 136 頁說:

“我們可以根據其中一個欄位的值對磁碟上文件的記錄進行物理排序

$$ … $$" 這種“物理排序”怎麼可能強制執行,尤其是在碎片化方面?大多數數據庫使用系統呼叫將其數據儲存在作業系統的文件系統中,只有極少數能夠進行原始 i/o。

我認為這只是本書作者對片語的草率轉折。顯然,如果您不進行原始 I/O(正如您所說,很少有現代數據庫會這樣做),那麼您對如何將記錄放在磁碟上的控制有限。

DBMS 使用以下方法將作業系統對數據庫文件的潛在碎片的影響降至最低:

  • 空間預分配。許多 DBMS 可以配置為以比原子 I/O 單元(“頁”或“塊”)大得多的塊(術語不同,但它們通常稱為“範圍”)請求空間分配,從而減少數據庫文件碎片。
  • 數據文件放置。使用通常稱為“表空間”的機制,或簡稱為數據文件目錄,可以將空間分配特徵被視為關鍵的表放置到單獨的文件系統上,在那裡它們可以在不受其他程序干擾的情況下增長。
  • I/O 緩衝區。這是迄今為止最有用和最重要的方法。調整的數據庫很少會等待同步 I/O 操作從磁碟讀取數據;通過文件系統記憶體和/或數據庫緩衝池,它需要的所有數據頁都可以在記憶體中使用,通常以較少碎片的形式存在。他們經常使用單獨的執行緒在查詢處理實際需要數據文件塊之前“預取”或“預讀”數據文件塊。

另請參閱維基百科上的內容。

引用自:https://dba.stackexchange.com/questions/308262