我正在学习DBMS的数据格式,发现我们有一个术语:页面。
页面是从外部存储(例如磁盘,SSD)中获取到主内存中的数据,当查询获取这些页面时,多个页面将首先“缓存”到低级缓存。
这让我想起了操作系统和计算机体系结构中使用的同一个术语页面。来自 Wiki 的关于此“分页”的一些正式描述是:
分页是一种内存管理方案,计算机通过该方案在辅助存储器中存储和检索数据以供在主内存中使用。在此方案中,操作系统从称为页面的相同大小块中的辅助存储中检索数据。分页是现代操作系统中虚拟内存实现的重要组成部分,使用辅助存储让程序超过可用物理内存的大小。
那么就到了第一个问题:
术语页面在 DBMS 和操作系统中是否具有相同的含义?
- 如果是的话,你能稍微解释一下问题2吗?
- 如果不是,你能解释为什么吗?他们有不同的实施方式吗?
更进一步:
- 在讲座中我们学习了N-ary Storage Model (NSM or slotted pages)和PAX (Partition Attributes Across) 参考了 Prof. Ailamaki 的这篇论文。假设页在DBMS 和OS 中具有相同的含义,为什么我们只在DBMS 中指定NSM 和PAX?这种页面格式可以移植到操作系统吗?(关于这篇论文会有帮助,你只需快速浏览数据布局和图表。)
问题 2是主要原因,我在这里提出问题并开始问自己,为什么 NSM、PAX 页面对于 DBMS 是特殊的。这个问题更笼统,并不关注任何特定的 DBMS。
一般来说,是的。该术语
PAGE
是最小可分配空间单元的通用术语。例如,在 SQL Server 中,页面的大小是固定的,过去一直是 4k 和 8k,具体取决于版本(不包括虚拟内存而非数据库结构的大页面),而在 Windows 中,页面可以有多种大小,具体取决于选项和底层硬件。我没有阅读整篇论文,因为它也重载了同一个术语。请注意,硬件和底层操作系统可能会改变
PAGE
大小,但不会改变一般含义。它的使用非常繁重,TBH 你可以在你自己的操作系统中做任何你想做的事情。这有点过于笼统和高层次,无法真正“回答”本身,“答案”将取决于硬件和软件并且是特定的。您可能想稍微缩小您的关注范围并提出一个更尖锐的问题,因为恕我直言,这是一个非常广泛的问题。
编辑:
您还提到了 SSD,它也有一个单元(讽刺)令人震惊
PAGE
地依赖于存储控制器和固件。一些 SSD 使用 1MB 或更多的页面,一些更小。通常,当我们谈论“低级缓存”时,通常指的是数据或代码缓存,通常称为行或段,而不是页面。
SQL Server 在此记录体系结构。这是固定的,无法更改。
Windows 页面大小(不要与页面文件混淆)可以通过调用GetSystemInfo(Windows API)找到,它将填充一个_SYSTEM_INFO结构,该结构有一个名为的成员
dwPageSize
,它将告诉您系统的当前页面大小 - 这应该仍然是在撰写本文时为 4k。