每个实例是否有 SQL Server Express 内存和 CPU 限制?

wiz*_*r42 32 sql-server instance memory sql-server-express

如果我在服务器中有 8GB 的​​ RAM 并且我运行 4 个 SQL Server Express 实例,那么 SQL Server 使用的总内存限制是 1GB 还是 4GB?

是否建议像这样运行多个实例以使每个数据库都能更好地利用资源(假设服务器有足够的资源)?

Pau*_*ite 28

如果我在服务器中有 8GB 的​​ RAM 并且我运行 4 个 SQL Express 实例,SQL Server 使用的总内存限制是 1GB 还是 4GB?

每个实例最多可为缓冲池使用 1GB 内存。每个实例总共可以使用多于 1GB 的空间,因为并非所有内存分配都通过缓冲池进行。在您的情况下,四个实例用于缓冲池的最大内存为 4GB。

BOL提取物

为了确认,我启动了 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;
Run Code Online (Sandbox Code Playgroud)

输出:

?????????????????????????
? Instance1 ? Instance2 ?
?????????????????????????
?   1102872 ?   1059812 ?
?????????????????????????
Run Code Online (Sandbox Code Playgroud)

每一个都略超过 1GB,因为总物理内存使用量不仅仅包括缓冲池使用量,如前所述。

是否建议像这样运行多个实例以使每个数据库都能更好地利用资源(假设服务器有足够的资源)?

如果每个实例上的数据库在功能上是独立的,那么以这种方式运行多个 Express 实例至少是可行的,尽管您需要特别注意配置和维护可能会变得更加复杂。

如果预期用途与许可证匹配,则使用其他版本可能会更好地为您服务,例如功能齐全(且非常便宜)的开发人员版)。在这一点上,您需要更多地说明情况才能得到明确的答案。

  • 另外值得注意的是,对于精明的读者:“SQL Server 数据库引擎”的意思是“单个实例”。每次您必须更改要连接的连接对话服务器(例如`localhost\dev` 与`localhost\test`)时,它就是一个新的“实例”或新的“引擎”。只是想我会清除它。 (4认同)

Tom*_*Tom 7

每个实例都是独立的,因为它有一个单独的过程。