SQL Server Windows NT — 64-разрядная память, потребляющая память

#sql-server-2019

Вопрос:

Вчера я просматривал некоторые сценарии и заметки из класса и заметил, что запросы были намного медленнее. Запросы, которые раньше занимали 0 мс процессорного времени и 10 мс истекшего времени, занимали более 10 секунд. Диспетчер задач показал, что SQL Server Windows NT — 64 разрядной версии работает и использует 5 ГБ из 8 ГБ моей памяти. Я перестал запускать запросы, но это продолжалось в течение нескольких часов, пока не сократилось до 2 ГБ, и продолжалось до тех пор, пока я не выключил его около 10 вечера. Этим утром SQL Server Windows NT — 64 разрядной версии использовал несколько сотен МБ памяти, пока я не запустил хранимую процедуру. Как вы можете видеть на картинке, он увеличил объем памяти более чем на 4 ГБ и остался на нем. Я точно знаю, что такое часто случается, но никогда не думал, что это может быть вызвано чем-то, что я запустил. Если я завершу задание, я потеряю соединение. Если я перезагрузлю компьютер, он тоже перезагрузится, я проверял пару раз. Что происходит на самом деле и что мне следует делать? Снимок экрана диспетчера задач

Комментарии:

1. SQL Server использует всю доступную память, которую он может получить по дизайну . Вы можете изменить это в разделе SSMS > Свойства сервера >> Память.

2. Какова реальная проблема, которую вы пытаетесь решить? Похоже, это рабочий стол/рабочая станция, а не выделенный SQL-сервер? Рекомендуется всегда устанавливать максимальный объем памяти для SQL Server — эмпирическое правило на 8-10% меньше общего объема оперативной памяти на выделенном сервере и больше на рабочем столе или сервере общих ресурсов.

3. На первый взгляд, плохой план запроса приводит к тому, что таблица заполняет память буферного пула, которая по умолчанию составляет столько памяти, сколько она может получить.

4. Это делало все остальные запросы такими медленными. А еще я хотел понять, что на самом деле происходит и почему. Похоже, вы все предлагаете мне изменить максимальную память сервера, которую я никогда не менял, так что по умолчанию она намного больше, чем у меня есть. Поэтому я изменил его на 3 ГБ, запустил ту же хранимую процедуру и выполнил. SQL Server использовал около 700 МБ памяти и увеличил ее до 2,85 ГБ. Так что это хорошо. Теперь он остается на этом уровне в течение длительного времени. Как мне снизить его до нормального уровня? Не все, но некоторые другие запросы выполняются дольше.

5. @gsong Установите разумный максимум использования памяти в свойствах сервера, а затем перезапустите службу SQL Server. Существуют способы вернуть память SQL Server обратно в ОС без перезагрузки, но они ненадежны и предназначены для производственного использования, в то время как перезапуск службы на вашей рабочей станции является наиболее простым решением.