我有一个驻留在内存中的表。它经过内存优化,并且没有任何其他设置。我基本上使用此表来缓存一些信息,以便每15分钟左右快速访问一次。我有一个问题,即使我按计划从中删除了所有数据,它似乎也没有释放RAM。尽管删除了旧数据,但它仍以增加的数据量增长。
有什么想法我需要做些什么来防止其覆盖范围爆炸?
答案 0 :(得分:0)
SQL将按设计使用系统上所有可用的RAM。在使用完所有功能之前,它会一直保持增长,这就是为什么SQL被认为是唯一安装在服务器上的原因。我认为没有任何办法可以阻止它。
答案 1 :(得分:0)
默认情况下,SQL Server将使用尽可能多的RAM。您可以通过配置SQL Server可以使用的最小内存和最大内存(以MB为单位)来指定硬限制。 SQL Server将始终分配最小内存,但它将继续分配,直到达到配置的最大限制。
一旦达到极限,它将决定什么应该保留在内存中以及应该做什么。虽然它将开始在内部逐出项目,但不会减少其分配的占用空间。因此,如果您将最小限制设置为1 GB,最大限制设置为10 GB,则它将从1 GB开始,直到10 GB。一旦达到10 GB,它将保留在那里,但内部可能仅使用5 GB。有监视工具和其他查询可以告诉您SQL Server从操作系统分配的总内存中正在使用的内存量。那可以是两个非常不同的数字。
请记住,这些值不仅限于内存优化表,它们会影响整个SQL Server。如果您有RAM,请使用它!
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