Если у меня 8 ГБ ОЗУ на сервере и я запускаю 4 экземпляра SQL Express, будет ли общий объем памяти, используемый SQL Server, 1 ГБ или 4 ГБ?
Каждый экземпляр может использовать до 1 ГБ памяти для пула буферов . Каждый экземпляр может использовать чуть больше 1 ГБ, потому что не все выделения памяти проходят через буферный пул. В вашем случае максимальная память, используемая четырьмя экземплярами для пула буферов, будет 4 ГБ.
Для подтверждения я запустил два экземпляра ядра СУБД SQL Server 2008 Express, выполнил некоторые действия для загрузки (отдельных) буферных пулов, а затем посмотрел на использование памяти для каждого экземпляра несколькими способами, например, с помощью DBCC MEMORYSTATUS или путем подсчета количества буферов с использованием DMV sys.dm_os_buffer_descriptors .
Указанные ниже значения использования физической памяти были получены с использованием одновременных запросов к системному 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 ║
╚═══════════╩═══════════╝
Каждый из них немного превышает 1 ГБ, поскольку общее использование физической памяти включает в себя не только использование пула буферов, как упоминалось ранее.
Желательно ли запускать несколько таких экземпляров, чтобы каждая база данных могла лучше использовать ресурсы (при условии, что на сервере достаточно ресурсов)?
Если базы данных в каждом экземпляре функционально независимы, то, по крайней мере, можно запустить несколько экземпляров Express таким образом, хотя вам необходимо уделить особое внимание настройке, и обслуживание может стать более сложным.
Возможно, вам лучше использовать другую редакцию, такую как полнофункциональная (и очень дешевая) версия для разработчиков, если предполагаемое использование соответствует лицензии). Вы должны были бы рассказать намного больше об обстоятельствах, чтобы получить четкий ответ по этому вопросу.
SQL Server Database Engine
средстваA Single Instance
. Каждый раз, когда вам нужно изменить сервер диалога, к которому вы подключаетесь (например,localhost\dev
vslocalhost\test
), это новый «Экземпляр» или новый «Механизм». Просто думал, что проясню это.Каждый экземпляр считается отдельным, так как он имеет отдельный процесс.
источник
В SQL Express ядро базы данных может потреблять только 1 ГБ ОЗУ , а любая БД не может быть больше 10 ГБ.
Таким образом, 4 экземпляра все равно должны были бы использовать 1 ГБ ОЗУ.
Вы можете узнать гораздо больше на http://msdn.microsoft.com/en-us/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- за 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/… и я также Мне нравится, как ответ на ТА, который был связан с НЕПРАВИЛЬНО НЕПРАВИЛЬНО. Начните с «1 ядро или 4 сокета», редакторы не могут даже правильно копировать и вставлять.