術語“頁面”在 DBMS 和作業系統術語中是否具有相同的含義?
我正在學習 DBMS 的數據格式,發現我們有一個術語:page。
頁面是從外部儲存(例如磁碟,SSD)中獲取的主記憶體中的數據,當查詢獲取這些頁面時,將首先“記憶體”幾個頁面到低級記憶體。
這讓我想起了作業系統和電腦體系結構中使用的同一個術語*頁面。*Wiki 中有關此“分頁”的一些正式描述是:
分頁是一種記憶體管理方案,電腦通過該方案從輔助儲存器儲存和檢索數據以供主記憶體儲器使用。在此方案中,作業系統從稱為頁面的相同大小塊中的輔助儲存中檢索數據。分頁是現代作業系統中虛擬記憶體實現的重要組成部分,使用二級儲存讓程序超過可用物理記憶體的大小。
那麼第一個問題來了:
- 術語頁面在 DBMS 和作業系統中是否具有相同的含義?
- 如果是,您能稍微解釋一下問題2嗎?
- 如果不是,你能解釋一下為什麼嗎?他們有不同的實施方式嗎?
更一步:
- 在講座中,我們學習了N-ary Storage Model(NSM 或 slotted pages)和PAX(Partition Attributes Across) ,參考了 AIlamaki 教授的這篇論文。假設頁面在 DBMS 和 OS 中具有相同的含義,為什麼我們只在 DBMS 中指定 NSM 和 PAX?這種頁面格式可以移植到作業系統嗎?(關於論文會有幫助,您只需快速瀏覽數據佈局和圖表。)
問題 2是主要原因,我在這裡提出問題並開始問自己,為什麼 NSM、PAX 頁面對於 DBMS 是特殊的。這個問題更籠統,並不關注任何特定的 DBMS。
術語頁在 DBMS 和 OS 中是否具有相同的含義?
一般來說,是的。該術語
PAGE
是最小可分配空間單元的通用術語。例如,在 SQL Server 中,頁面是固定大小的,歷史上一直是 4k 和 8k,這取決於版本(不包括作為虛擬記憶體而不是數據庫結構的大頁面),而在 Windows 中,頁面可以是多種大小,具體取決於選項和底層硬體。假設頁面在 DBMS 和 OS 中具有相同的含義,為什麼我們只在 DBMS 中指定 NSM 和 PAX?這種頁面格式可以移植到作業系統嗎?
我沒有閱讀整篇論文,因為它也重載了同一個術語。請注意,硬體和底層作業系統可能會改變
PAGE
大小,但不會改變通用含義。它的使用量很大,TBH 你可以在自己的作業系統中製作任何你想要的東西。這對於真正“回答”本身來說有點過於籠統和高級,而且“答案”將取決於硬體和軟體並且是具體的。您可能想稍微縮小您的注意力並提出一個更尖銳的問題,因為這是非常廣泛的恕我直言。
編輯:
您還提到了 SSD,它也有一個單元,
PAGE
其依賴於*(諷刺)足夠令人震驚*的儲存控制器和韌體。有些 SSD 使用 1MB 或更多的頁面,有些更小。通常,當我們談論“低級記憶體”時,它是數據或程式碼記憶體,通常被稱為行或段,而不是頁面。
也許還有一個問題。在哪里以及如何從 SQL 伺服器中找到頁面大小或頁面格式的文件或實現?任何特定的 DBMS 或 SQL 伺服器都會讓我高興。
SQL Server 在此處記錄了體系結構。這是固定的,無法更改。
Windows 頁面大小(不要與頁面文件混淆)可以通過呼叫GetSystemInfo (Windows API) 來找到,它將填充一個_SYSTEM_INFO結構,該結構有一個名為的成員
dwPageSize
,它將告訴您系統的目前頁面大小 - 這應該仍然在撰寫本文時為 4k。