Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内存中的SQL表不断增长,尽管它已被清空_Sql_Sql Server 2014 - Fatal编程技术网

内存中的SQL表不断增长,尽管它已被清空

内存中的SQL表不断增长,尽管它已被清空,sql,sql-server-2014,Sql,Sql Server 2014,我有一个驻留在内存中的表。它是内存优化的,没有任何其他设置。我基本上使用这个表来缓存一些信息,以便每15分钟左右快速访问一次。我的问题是,即使我按计划删除其中的所有数据,它似乎也不会释放RAM。尽管旧数据已被删除,但它仍随着添加的数据量而不断增长 你知道我需要做些什么来防止其占用空间爆炸吗?SQL将根据设计使用系统上所有可用的RAM。它将继续增长,直到它使用了所有东西,这就是为什么SQL是服务器上唯一安装的东西。我认为没有任何方法可以阻止它。默认情况下,SQL Server将使用尽可能多的RAM

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


你知道我需要做些什么来防止其占用空间爆炸吗?

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

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

一旦达到极限,它将决定什么应该留在记忆中,什么应该离开。虽然它将开始在内部逐出项目,但不会减少分配的占用空间。因此,如果您将最小限制设置为1GB,最大限制设置为10GB,那么它将从1GB开始,一直工作到10GB。一旦它达到10GB,它将留在那里,但它可能只在内部使用5GB。有一些监控工具和其他查询可以告诉您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

问题是,SQL告诉我,当表中没有行时,In-RAM表的内存占用是10Gig。我在RAM sql中查找垃圾收集,Microsoft声称它非常具有攻击性。我想说我很困惑。这是不是让系统变慢了?你的内存用完了吗?有什么错误吗?很多人只有在遇到问题时才开始考虑RAM的使用情况。您在哪里看到SQL占用10GB的信息?我通过查询得到此信息:select*from sys.dm\u db\u xtp\u table\u memory\u stats。我现在没有内存问题。但我读到过,垃圾收集应该是有攻击性的,而事实似乎并非如此。例如,它说内存中的表分配了19GB,它使用8GB,但表是空的。这与我有关。当我查询:select*from sys.dm_db_xtp_table_memory_stats时,它告诉我为表分配的内存是18GB,表使用的内存是8G。我的问题是桌子是空的。我是内存表新手,我担心这会变成一个问题,因为RAM似乎没有被释放。