如果服务器中有8GB RAM,并且运行4个SQL Server Express实例,那么SQL Server使用的总内存限制是1GB还是4GB?
明智的做法是运行多个实例,以使每个数据库都能更好地利用资源(假设服务器具有足够的资源)?
如果服务器中有8GB RAM,并且运行4个SQL Server Express实例,那么SQL Server使用的总内存限制是1GB还是4GB?
明智的做法是运行多个实例,以使每个数据库都能更好地利用资源(假设服务器具有足够的资源)?
Answers:
如果服务器中有8GB RAM,并且运行4个SQL Express实例,那么SQL Server使用的总内存限制是1GB还是4GB?
每个实例最多可以为缓冲池使用1GB的内存。每个实例总共可以使用超过1GB的空间,因为并非所有内存分配都通过缓冲池进行。在您的情况下,四个实例用于缓冲池的最大内存为4GB。
为了确认,我启动了SQL Server 2008 Express数据库引擎的两个实例,执行了一些活动以加载(单独的)缓冲池,然后以多种方式查看了每个实例的内存利用率,例如使用DBCC MEMORYSTATUS或通过使用sys.dm_os_buffer_descriptors DMV 计算缓冲区的数量。
通过对数据库引擎的每个实例上的系统DMV sys.dm_os_process_memory进行同时查询,可以获取以下物理内存使用量:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
输出:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
如前所述,每个物理内存的使用量略超过1GB,因为总物理内存使用量不仅仅包括缓冲池使用率。
明智的做法是运行多个实例,以使每个数据库都能更好地利用资源(假设服务器具有足够的资源)?
如果每个实例上的数据库在功能上是独立的,则至少可以以这种方式运行Express的多个实例,尽管您需要特别注意配置,并且维护可能会变得更加复杂。
如果预期的用法与许可相匹配,则使用其他版本(例如功能全面(且非常便宜)的Developer Edition)可能会更好。您需要更多地谈论环境,以便在这一点上得到明确的答案。
在SQL Express中,数据库引擎只能消耗1 GB RAM,并且任何DB都不能大于10 GB。
因此,仍有4个实例必须共享该1 GB RAM。
您可以在http://msdn.microsoft.com/zh-cn/library/cc645993(v=SQL.110).aspx中找到更多信息。
此处关于堆栈溢出的类似讨论表示,顺便说一句,这是正确的答案,因此无需下注:https ://stackoverflow.com/questions/1169634/limitations-of-sql-server-express
即使关于SQL Server Express 2005,此页面也表示相同:http : //www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- per-instance.html
Maximum memory utilized (SQL Server Database Engine)
请注意,他们在那里使用的方式与在线使用的方式相同:(Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1
对于那些在家玩的人,重点是他们是相同的量度)msdn.microsoft.com/en-us/library / ...爱被链接到SO的答案是WRONG WRONG WRONG。从“ 1核或4个插槽”开始,编辑器甚至无法正确地复制粘贴。
SQL Server Database Engine
手段A Single Instance
。每当您必须更改要连接到的连接对话框服务器(例如localhost\dev
vslocalhost\test
)时,它都是新的“实例”或新的“引擎”。只是以为我会澄清这一点。