Оптимизация памяти SQL Server - PullRequest
0 голосов
/ 29 ноября 2011

Это будет моя первая попытка тонкой настройки нашего SQL Server 2008R2, и я хотел бы получить отправную точку, основанную на следующем.

При просмотре монитора ресурсов я вижу (в КБ): Совершить: 843 948 Рабочий набор: 718 648 Поделиться: 26 276 Частное лицо: 692 372

Из 2 гигабайт, доступных на нашем виртуальном сервере, 1.6 уже используется, и я подозреваю, что это связано с SQL Server, и память переполняется, когда я запускаю службу, которая выполняет кучу вставок и проверок TVP. Я уже добавил GC.collect () в свой сервис на c #, однако я не вижу особых изменений, которые возвращают меня к SQL Server.

Где было бы хорошей отправной точкой для меня, чтобы узнать больше об оптимизации на основе этой информации и некоторых быстрых указателей?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 29 ноября 2011

Вот быстрый указатель: купите больше памяти. 2ГБ это ничто сегодня.

Для длинного ответа: вам нужно понять, как SQL Server выделяет и использует память. 1.6Gb на коробке 2Gb совершенно нормально. См. Динамическое управление памятью :

Когда SQL Server запускается, он вычисляет размер виртуального адресного пространства для пула буферов на основе ряда параметров, таких как количество физическая память в системе, количество серверных потоков и различные параметры запуска. SQL Server резервирует вычисленное количество его обрабатывать виртуальное адресное пространство для пула буферов, но оно получает (фиксирует) только необходимый объем физической памяти для текущего нагрузка.

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

Другими словами, SQL Server не освободит 1,6 ГБ, если не поступит уведомление о нехватке памяти из Windows.

И, наконец, о вашем вопросе о том, где искать информацию об оптимизации: Ожидания и очереди - это превосходный ресурс. Это методология, которая позволяет выявлять узкие места и рекомендует соответствующие действия для всех распространенных узких мест.

1 голос
/ 29 ноября 2011

Если это конфигурация по умолчанию, сервер sql проанализирует использование, а затем захватит столько памяти, сколько сможет, чтобы оптимизировать себя.Если другие приложения затем начинают запрашивать память, они возвращают ее.

Существует несколько значений, с которыми вы можете играть с точки зрения памяти: минимальное значение - это количество, которое сервер sql хранит при себе, а максимальноекоторый он никогда не захватит больше чем.Вы также можете поиграть с количеством потоков, которые он будет запускать.Вам понадобится хорошая статистика для этого.Зависит от ваших моделей использования, а также от того, что еще нужно памяти и насколько хорошо она играет с другими.Запутайтесь, и вы можете голодать SQL Server, который никогда не бывает идеальным.Я всегда был большим поклонником выделенных машин для dbms для любого нетривиального использования.

Столько искусства, сколько науки, если только вы не найдете там ничего ужасного, замедление работы вашего сервера sql даст вашим приложениям многопамяти ничего не делать, потому что они ждут Db ....

Больше вещей, чтобы посмотреть. MSDN - производительность и память сервера Sql Вам необходимо запустить мониторинг производительности и иметь четкое представление о том, что происходит во время работы.И вы хотите «средний» пробег.Пиковые попадания, обработка в нерабочее время, праздничные дни и т. Д., Вообще бесполезные.

PS не забывайте, что мониторинг производительности является значительным ударом по машине.

1 голос
/ 29 ноября 2011

SQL Server предназначен для предварительного выделения и «съедения» всей памяти, которую вы позволяете ему использовать.На самом деле нет никакого способа увидеть какие-либо улучшения, кроме как уменьшить влияние SQL в конфигурации.

...