SQL Server 的缓冲池(数据缓存)最大大小的计算公式是什么(当机器只有一个实例时)。
假设机器有 1 GB 的物理内存,在这种情况下缓冲池的最大大小是多少?
假设最大服务器内存为 0。
在阅读有关内存授予的信息时出现了这个问题,我读到资源信号量可以使用 75% 的缓冲池来进行查询内存授予。那么自然的问题就是缓冲池是如何计算的。
谢谢
SQL Server 的缓冲池(数据缓存)最大大小的计算公式是什么(当机器只有一个实例时)。
假设机器有 1 GB 的物理内存,在这种情况下缓冲池的最大大小是多少?
假设最大服务器内存为 0。
在阅读有关内存授予的信息时出现了这个问题,我读到资源信号量可以使用 75% 的缓冲池来进行查询内存授予。那么自然的问题就是缓冲池是如何计算的。
谢谢
将最大服务器内存设置为 0 时,两个因素将决定 SQL Server 将使用多少内存,从而决定缓冲池将增长多大。
但在讨论这些之前,请考虑在没有任何限制的情况下,SQL Server 会将数据页读入内存并将其保留在那里,直到其他东西请求该空间为止。
大小如果数据库将决定缓冲池将增长多大。如果您有一个 20 GB 的数据库,任何 128 GB 是系统内存,缓冲池可能会增长到 20 GB 左右,但不会更大。此时,您的整个数据库将在内存中。
限制缓冲池的另一个因素是 Windows。Windows 将允许 SQL 消耗内存,而另一个应用程序或服务不需要它。SQL Server 很可能需要额外的内存,但 Windows 不同意。也可以让 Windows 收回内存。这一切都取决于服务器上运行的其他服务和应用程序。
所以,实际上并没有一个固定的数字。SQL Server 会尽可能地增大它,试图将整个数据库放入内存中,直到 Windows 说“不”。
至于你应该计划多大?这个答案可能会有所不同。从名义上的内存量开始,比如数据库大小的 1/8 到 1/4,并监视它是否存在内存争用。如果你看到任何,增加内存,直到你没有。