我使用的是SQL Server 2014 Developer Edition。
SQL Server在服务器上运行,并且在执行时占用大约60 GB内存,执行完成后它不会释放它。
请就此提出建议。
我想将它降低到正常水平。
答案 0 :(得分:0)
SQL服务器在不是专用SQL服务器计算机的计算机上有多个实例,但SQL Server嵌入式或LocalDB作为操作系统组件的一部分或作为应用程序的一部分安装的情况下很常见。
在这种情况下,为每个实例分配内存是合适的,这样他们就不会互相踩在脚趾上。
此外,一些应用程序大量使用数据库以及内存和处理器密集型应用程序处理。如果有大量的数据库传输到数据库,那么将数据库放在与应用程序相同的机器上以减少IO成本是有意义的,因为它们可以使用共享内存连接。在这种情况下,您还必须分配允许使用SQL Server的内存量。
开发机器就是一个很好的例子 - 通常你会安装SQL Server开发版,除此之外,任何数据库项目都会启动一个SQL Server LocalDB实例。 / p>
对于您的Dev机器,您希望保持此值相对较低。我建议512 MB,但如果你觉得它太低了1024 MB应该不是问题
要减少SQL Server内存使用量,可以运行以下SQL:
EXEC sys.sp_configure N'show advanced options', N'1' ;
RECONFIGURE WITH OVERRIDE;
EXEC sys.sp_configure N'max server memory (MB)', N'512';
RECONFIGURE WITH OVERRIDE;
EXEC sys.sp_configure N'show advanced options', N'0';
RECONFIGURE WITH OVERRIDE;
减少LocalDB实例的使用情况类似,您只需连接到每个LocalDB实例并使用相同的命令。
例如,要将所有LocalDB实例设置为最多使用256MB:
$MaxServerMemory = 256
@( & sqllocaldb info ) | %{
"Reconfiguring (LocalDB)\$_"
& sqlcmd.exe -E -S "(LocalDB)\$_" -Q "EXEC sys.sp_configure N'show advanced options', N'1' ;RECONFIGURE WITH OVERRIDE;EXEC sys.sp_configure N'max server memory (MB)', N'$MaxServerMemory';RECONFIGURE WITH OVERRIDE;EXEC sys.sp_configure N'show advanced options', N'0'; RECONFIGURE WITH OVERRIDE;" *>&1
""
}