ToC Asked: 2015-05-22 06:19:18 +0800 CST2015-05-22 06:19:18 +0800 CST 2015-05-22 06:19:18 +0800 CST 在 Sql Server 中,VAS 和缓冲池有什么区别? 772 我的理解: 在 SQL Server 中, 缓冲池是所有Data/Proc/Log Cache等所在的位置。 虚拟地址空间是指物理位置(在 RAM 或页面文件中)的逻辑位置。 但是这句话让我很困惑: “..多页分配发生在 VAS 区域,单页分配来自缓冲池……” 缓冲池和 VAS 有什么区别? sql-server buffer-pool 1 个回答 Voted Best Answer Shanky 2015-05-22T06:47:17+08:002015-05-22T06:47:17+08:00 没有缓冲池和VAS不是一回事。在 SQL Server 中,不允许任何内存请求直接访问物理内存,该请求首先映射到进程 VAS,然后如果 SQL Server 发现内存空闲,它会将这个 VAS 地址映射到物理内存,然后内存被提交。 缓冲池是物理内存 VAS 是虚拟内存。 增值服务 VAS 是对进程可见的虚拟地址空间总量。windows OS中的总VAS分为OS进程的VAS和应用程序的VAS。SQL Server 作为应用程序运行。对于 64 位系统,总 VAS 为 16TB。所以现在 SQL 服务器和 Windows 进程都获得了 8TB 的 VAS。 每当一个新进程想要读取数据或将数据写入内存时,它都会引用其 VAS 区域中的内存,因此新进程将看到 8TB 的 VAS,然后将其映射到物理内存。这个物理内存将是你的缓冲池 缓冲池 缓冲区是内存中的一个 8 KB 页面,与数据或索引页面大小相同,您可以将缓冲区视为一个帧,当它们从磁盘被带到内存时,它保存数据和索引页面。SQL Server 缓冲区管理器管理将数据页读入缓冲池并将其写入磁盘的任务。它是为 SQL Server 保留的内存存储,默认情况下,如果您不为其设置值,它将占用尽可能多的内存。缓冲池仅将内存分配给需要少于 8 KB 页面的请求,此功能在 SQl Server 2012 中更改,其中缓冲池没有任何意义,它只是消费者。分配少量连续内存比分配大量连续内存容易(大量连续内存可能没有空闲或无法分配)。 32位系统 在 32 位系统中,SQL Server 的 VAS 为 2G。如果系统是 WOW,它的 VAS 将是 4 G。因此,对于需要大量连续内存且此类内存不是从缓冲池而是在缓冲池之外的进程来说,这将成为限制。 “..多页分配发生在 VAS 区域,单页分配来自缓冲池……” 此语句仅适用于 SQL Server 2005 到 2008 R2。>8KB 的页面分配不是由缓冲池完成的。为缓冲池进行页面分配的single page allocator分配器是,而为大于 8KB 的内存页面分配的分配器是multi page allocator,并且内存分配在缓冲池之外。 对于 SQL Server 2012,有Any page allocator两个页面 <=8KB 和页面 >=8KB 的分配
没有缓冲池和VAS不是一回事。在 SQL Server 中,不允许任何内存请求直接访问物理内存,该请求首先映射到进程 VAS,然后如果 SQL Server 发现内存空闲,它会将这个 VAS 地址映射到物理内存,然后内存被提交。
缓冲池是物理内存 VAS 是虚拟内存。
增值服务
VAS 是对进程可见的虚拟地址空间总量。windows OS中的总VAS分为OS进程的VAS和应用程序的VAS。SQL Server 作为应用程序运行。对于 64 位系统,总 VAS 为 16TB。所以现在 SQL 服务器和 Windows 进程都获得了 8TB 的 VAS。
每当一个新进程想要读取数据或将数据写入内存时,它都会引用其 VAS 区域中的内存,因此新进程将看到 8TB 的 VAS,然后将其映射到物理内存。这个物理内存将是你的缓冲池
缓冲池
缓冲区是内存中的一个 8 KB 页面,与数据或索引页面大小相同,您可以将缓冲区视为一个帧,当它们从磁盘被带到内存时,它保存数据和索引页面。SQL Server 缓冲区管理器管理将数据页读入缓冲池并将其写入磁盘的任务。它是为 SQL Server 保留的内存存储,默认情况下,如果您不为其设置值,它将占用尽可能多的内存。缓冲池仅将内存分配给需要少于 8 KB 页面的请求,此功能在 SQl Server 2012 中更改,其中缓冲池没有任何意义,它只是消费者。分配少量连续内存比分配大量连续内存容易(大量连续内存可能没有空闲或无法分配)。
32位系统
在 32 位系统中,SQL Server 的 VAS 为 2G。如果系统是 WOW,它的 VAS 将是 4 G。因此,对于需要大量连续内存且此类内存不是从缓冲池而是在缓冲池之外的进程来说,这将成为限制。
此语句仅适用于 SQL Server 2005 到 2008 R2。>8KB 的页面分配不是由缓冲池完成的。为缓冲池进行页面分配的
single page allocator
分配器是,而为大于 8KB 的内存页面分配的分配器是multi page allocator
,并且内存分配在缓冲池之外。对于 SQL Server 2012,有
Any page allocator
两个页面 <=8KB 和页面 >=8KB 的分配