Ограничен ли объем памяти и ЦП SQL Server Express на экземпляр?

32

Если у меня 8 ГБ ОЗУ на сервере и я запускаю 4 экземпляра SQL Server Express, будет ли общий объем памяти, используемый SQL Server, 1 ГБ или 4 ГБ?

Желательно ли запускать несколько таких экземпляров, чтобы каждая база данных могла лучше использовать ресурсы (при условии, что на сервере достаточно ресурсов)?

wizzardmr42
источник

Ответы:

27

Если у меня 8 ГБ ОЗУ на сервере и я запускаю 4 экземпляра SQL Express, будет ли общий объем памяти, используемый SQL Server, 1 ГБ или 4 ГБ?

Каждый экземпляр может использовать до 1 ГБ памяти для пула буферов . Каждый экземпляр может использовать чуть больше 1 ГБ, потому что не все выделения памяти проходят через буферный пул. В вашем случае максимальная память, используемая четырьмя экземплярами для пула буферов, будет 4 ГБ.

BOL экстракт

Для подтверждения я запустил два экземпляра ядра СУБД 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 таким образом, хотя вам необходимо уделить особое внимание настройке, и обслуживание может стать более сложным.

Возможно, вам лучше использовать другую редакцию, такую ​​как полнофункциональная (и очень дешевая) версия для разработчиков, если предполагаемое использование соответствует лицензии). Вы должны были бы рассказать намного больше об обстоятельствах, чтобы получить четкий ответ по этому вопросу.

Пол Уайт говорит, что GoFundMonica
источник
3
Также примечательно, для проницательного читателя: SQL Server Database Engineсредства A Single Instance. Каждый раз, когда вам нужно изменить сервер диалога, к которому вы подключаетесь (например, localhost\devvs localhost\test), это новый «Экземпляр» или новый «Механизм». Просто думал, что проясню это.
Jcolebrand
7

Каждый экземпляр считается отдельным, так как он имеет отдельный процесс.

TomTom
источник
1
Я предполагаю, что вы уверены, что ограничитель не применяется во всех процессах тогда?
-8

В 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

Сообщество
источник
3
Не обязательно следует - это 1 движок на сервер или на экземпляр?
1
Хорошо, это подразумевает это, но также возможно, что они пропустили это на линии ограничения памяти.
1
Просто потому, что это в Интернете, это должно быть правдой. Они никогда не допустят, чтобы что-то не так было в Интернете. Скажем так, чтобы сказать, что проблема здесь в том, что должен быть процесс управления или что-то запрограммированное в ОС с единственной целью - навсегда ограничить все возможности SQL Express. Я действительно не думаю, что это произошло (АКА, это абсолютно не произошло, основываясь на том факте, что я дышу кислородом и могу очень хорошо следовать логике), поэтому факт в том, что сам процесс управляет количеством оперативной памяти используемый.
Jcolebrand
2
Умолять людей убрать отрицательные отзывы о том, что естественно является плохим ответом, вряд ли получит положительные отзывы, независимо от того, какой источник вы цитируете. Если вы действительно хотите процитировать источник, загрузите несколько экземпляров и покажите их фактическую загрузку в памяти. Это единственный способ узнать наверняка. Либо так, либо покажите нам код Microsoft, который управляет поведением SQL Express. Это всегда управление экземпляром, потому что каждый сервис самодостаточен сверху вниз. Все службы управления работают через порты.
Jcolebrand
2
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 сокета», редакторы не могут даже правильно копировать и вставлять.
Jcolebrand