Назад | Перейти на главную страницу

SQL Server 2008 R2 не использует выделенную память

Наше приложение работает на сервере с 4-ядерным процессором, 8 ГБ ОЗУ и Sql Server 2008 R2 Standard Edition (10.50.1600.1), 64-разрядная версия. Сервер, выделенный для Sql Server, никакая другая тяжелая служба не работает.

Мы установили минимальное / максимальное использование памяти на 4 / 6,4 ГБ соответственно. AWE выключен, и счетчик заблокированных страниц всегда остается равным 0. Сходство с процессором сервера Sql поддерживается автоматически, а управление виртуальной памятью Windows также установлено на автоматическое.

Проблема в том, что использование физической памяти никогда не превышает 723 МБ. Даже при запуске отчетов с большой нагрузкой в ​​фоновом режиме. Мы сталкиваемся с огромным ожиданием блокировки.

Сервер работал на виртуальной машине, которую мы считали причиной проблемы, но она все еще существует после миграции на физический сервер.

Что может ограничивать использование памяти?

Изменить (ОС): Windows 8.1. База данных ранее работала на виртуальном сервере Windows 2008 с почти такой же емкостью. Перенесено в эту для тестирования. Достаточно конфигурации для приложения.

Я пробовал блокировать страницы. Пользователю NETWORKSERVICE, который запускает службу, предоставлено право блокировки страницы с использованием параметров групповой политики. Потом включил AWE. Не помогло.

Изменить (замки): у этого есть очевидная причина. Наши портативные устройства переносят свои данные в автономном режиме на Sql Server CE. Как только они начинают передавать свои ежедневные данные в основную базу данных из-за длительных транзакций, другие клиенты ждут получения блокировок, в основном LCK_M_S. Хотя КПК передают данные строка за строкой, движок чаще всего блокирует несколько страниц из-за индексов. Мы не знаем, как решить эту проблему, потому что не можем отказаться от использования транзакций.

Ниже вы можете увидеть некоторые индикаторы двух установок одного и того же приложения. Значения правого столбца в этом вопросе принадлежат серверу. И левая относится к самой большой реализации. Во-первых, очевидно, нужно больше памяти.

Total Mem (GB)                               14         8
Mem Used by SQL Server (GB)                12,5       0,5
Page Faults (per minute)                  13500      1200
Key Lock Count                                6         3
Key Lock Wait (sec)                          20        11
Page Lock Count                               8         3
Page Lock Wait (sec)                         65       591
Stolen Pages                             145945     12525
Database Pages                          1045799     25564
Database Size On Disk (MB)                52504       269
User Connections                             95        18
Buffer Cache Hit Ratio (%)                  100       100

Максимальный объем памяти сервера означает, что ваш сервер не может использовать больше этого количества, а не то, что он должен используйте это количество. Минимальная память сервера не значит должен используйте это количество; это означает, что, как только сервер использует это количество, он не передает память ниже этого количества. По сути, SQL Server использует необходимый объем памяти до тех пор, пока не достигнет установленного вами верхнего предела, и если он перестанет использовать его, он может вернуть часть памяти, если вы не установили минимальный объем памяти.

При этом сказано:

Рекомендации Microsoft относительно памяти для SQL Server 2008 R2 ... оптимистичны. (Они рекомендуют 4 ГБ или больше.) Вы не сказали, какую операционную систему используете, но они также рекомендуют 2 ГБ ОЗУ для Windows Server 2008 R2 и 8 ГБ ОЗУ на 2012 год.

В основном: тот номер 512 МБ ОЗУ, указанный в качестве «минимума» для установки ОС, в основном означает, что «установщик откажется работать ниже этого» числа. (То же самое для 1 ГБ ОЗУ для SQL, если на то пошло.)

Мое мнение? Операционная система - это то, что использует вашу оперативную память.

Вы не говорите, какую ОС используете? А всего 8Гб на сервер? Это просто безумно мало для современной машины, и когда вы говорите, что использование физической памяти никогда не превышает 723 МБ, я предполагаю, что вы говорите о сервере SQL, а не о сервере в целом? Просто пытаюсь все установить

Право нужно согласиться с постом выше, есть ли какая-то физическая причина, по которой у вас только 8 ГБ оперативной памяти? теперь это есть на ноутбуках. Я даже не уверен, был бы счастлив запустить файловый сервер на Win 2008 с 8 ГБ, не говоря уже о добавлении к нему SQL? Это не значит, что оперативная память стоит дорого. Максимальное количество ОЗУ на этой машине, если вы можете вставить больше, если вы не можете, тогда это какой-то рабочий стол, на котором он установлен? Какой у вас диск / массив? БД - это интенсивный ввод-вывод. Диски SATA - настоящий мусор, если вы их зеркалируете, будет еще хуже, так как все записывается дважды. Насколько я понимаю, СОП для БД - это RAID 10, нет причин не использовать его очень быстро и устойчиво.