是否建议运行这样的多个实例以使每个数据库能够更好地利用资源(假设服务器有足够的资源)?
解决方法
If I have 8GB of RAM in a server and I run 4 instances of sql Express,
will the total memory limit used by sql Server be 1GB or 4GB?
Each instance can use up to 1GB of memory for the buffer pool.每个实例总共可以使用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.
Would it be advisable to run multiple instances like this to enable
each database to make better use of resources (assuming that the
server has plenty of resources)?
如果每个实例上的数据库在功能上独立,那么以这种方式运行多个Express实例至少是可行的,尽管您需要特别注意配置和维护可能会变得更加复杂.
如果预期用法与许可证匹配,则使用其他版本可能会更好,例如功能齐全(且非常便宜)的Developer Edition.你需要更多地了解情况,以便在这一点上得到明确的答案.