内存表中的 SQL 尽管已清空,但仍在不断增长



我有一个驻留在内存中的表。它是内存优化的,没有任何其他设置。我基本上使用这个表来缓存一些信息,以便每 15 分钟左右快速访问一次。我遇到的问题是,即使我按计划从中删除了所有数据,它似乎也不会释放 RAM。尽管旧数据已被删除,但它仍会随着添加的数据量而不断增长。

知道我需要做些什么来防止它的足迹爆炸吗?

SQL将按照设计使用系统上所有可用的RAM。它会一直增长,直到它用完所有东西,这就是为什么SQL是服务器上唯一安装的东西。我认为没有任何方法可以阻止它。

默认情况下,SQL Server 将使用尽可能多的 RAM。可以通过配置 SQL Server 可以使用的最小内存和最大内存(以 MB 为单位(来指定硬限制。SQL Server 将始终分配最小内存,但它将继续分配,直到达到配置的最大限制。

一旦达到限制,它将决定什么应该保留在内存中,什么应该去。虽然它将开始在内部逐出项目,但它不会减少其分配的占用空间。因此,如果您将最小限制设置为 1 GB,将最大限制设置为 10 GB,它将从 1 GB 开始,然后逐步增加到 10 GB。一旦达到 10 GB,它将保留在那里,但它可能只在内部使用 5 GB。有一些监视工具和其他查询可以告诉您SQL Server在从操作系统分配的内存总数中正在使用多少内存。这可能是两个非常不同的数字。

请记住,这些值限于内存优化表,它们会影响所有 SQL Server。如果您有内存,请使用它!

EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'min server memory (MB)', N'1024' -- 1 GB
GO
EXEC sys.sp_configure N'max server memory (MB)', N'16384' -- 16 GB
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE
GO

最新更新