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 Server поддерживается автоматически, а управление виртуальной памятью 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
2 ответа
Максимальный объем памяти сервера означает, что ваш сервер не может использовать больше этого количества, а не то, что он должен использовать это количество. Минимальная память сервера не означает, что она также должна использовать это количество; это означает, что, как только сервер использует так много, он не уступает памяти ниже этого количества. По сути, SQL Server использует необходимый объем памяти до тех пор, пока не достигнет установленного вами верхнего предела, и если он прекратит использовать его, он может вернуть часть его обратно, если вы не установили минимальный объем памяти.
Это говорит:
Рекомендации Microsoft относительно памяти для SQL Server 2008 R2... оптимистичны. (Они рекомендуют 4 ГБ или более.) Вы не сказали, какую операционную систему вы использовали, но они также рекомендуют 2 ГБ ОЗУ для Windows Server 2008 R2 и 8 ГБ ОЗУ на 2012 год.
По сути: те 512 МБ ОЗУ, которые указаны как "минимальные" для установки ОС, - это, по сути, "установщик откажется работать ниже этого" числа. (То же самое относится и к 1 ГБ ОЗУ для SQL.)
Мое мнение? Операционная система - это то, что использует вашу оперативную память.
Вы не говорите, какую ОС вы используете? Но 8GB для сервера всего? Это просто невероятно мало для современной машины, и когда вы говорите, что использование физической памяти никогда не превышает 723 МБ, я предполагаю, что вы говорите о сервере SQL, а не о сервере в целом? Просто пытаюсь все установить
Правильно согласиться с постом выше, есть ли какая-то физическая причина, по которой у вас есть только 8 ГБ ОЗУ? Вы получаете это на ноутбуках сейчас. Я даже не уверен, я был бы счастлив запустить файловый сервер на Win 2008 с 8Gb, не говоря уже о добавлении SQL к нему? Это не значит, что ОЗУ стоит дорого, МАКСИМАЛЬНО израсходуйте ОЗУ на этом компьютере, если предположить, что вы можете вставить больше, если вы не можете, то это какой-то рабочий стол, на котором он установлен? Какой у вас диск / массив? БД - это интенсивный ввод / вывод. SATA-диски на самом деле просто мусор, если вы отразите их, это будет еще хуже, так как все написано дважды. Насколько мне известно, SOP для БД - это RAID 10, нет причин не использовать его очень быстро и очень устойчиво.