Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выделение оперативной памяти на запрос / 10 сообщений из 10, страница 1 из 1
23.04.2021, 09:34
    #40065050
Danion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Добрый день.

Появился вопрос по выделению памяти на запрос. После перезагрузки сервера появилась проблема с несколькими запросами, которые начали запрашивать десятки ГБ оперативной памяти на запуск. Через пару дней проблема ушла и эти же запросы запрашивали уже в МБ. Кроме памяти было ещё и большее количество чтений строк, у некоторых запросов больше, чем в таблицах.
После перезагрузки очищается динамическая память, скорее всего с этим связано. Но сейчас вижу, что эти запросы опять вернулись к повышенным запросам, хотя ребута не было.
Один хочет 80+ ГБ, хотя показывает, что ему 22 МБ достаточно, при этом в пункте идеально - вся память сервера.
Версия 2017 CU21 Enterprise.
С чем может быть связан такой переизбыток запрошенной оперативной памяти и почему опять к нему вернулось?
...
Рейтинг: 0 / 0
23.04.2021, 10:49
    #40065097
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Danion, план запроса изменился.
Статистика протухла, или запрос был скомпилирован с неудачными параметрами - это чаще всего.
...
Рейтинг: 0 / 0
23.04.2021, 11:40
    #40065121
Выделение оперативной памяти на запрос
Danion
Добрый день.

Появился вопрос по выделению памяти на запрос. После перезагрузки сервера появилась проблема с несколькими запросами, которые начали запрашивать десятки ГБ оперативной памяти на запуск. Через пару дней проблема ушла и эти же запросы запрашивали уже в МБ. Кроме памяти было ещё и большее количество чтений строк, у некоторых запросов больше, чем в таблицах.
После перезагрузки очищается динамическая память, скорее всего с этим связано. Но сейчас вижу, что эти запросы опять вернулись к повышенным запросам, хотя ребута не было.
Один хочет 80+ ГБ, хотя показывает, что ему 22 МБ достаточно, при этом в пункте идеально - вся память сервера.
Версия 2017 CU21 Enterprise.
С чем может быть связан такой переизбыток запрошенной оперативной памяти и почему опять к нему вернулось?
Надо смотреть планы запросов. Они могут быть не стабильными. Происходит примерно так: после перезагрузки первые несколько исполнений запроса идут с редкими параметрами. План строится под них. А потом запросы исполняются с наиболее типичными параметрами. И вот под них план уже оказывается крайне не оптимальным. В итоге в сотни раз возрастает длительность выполнения и потребление ресурсов. Через какое-то время план может опять перестроиться и всё вернётся в норму.

Есть брутальный способ: указывать в таких запросах OPTION RECOMPILE.
...
Рейтинг: 0 / 0
23.04.2021, 14:27
    #40065212
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Danion,

если стабильно видите granted намного больше used, то настраивайте Resource Governor для ограничения максимальной квоты выделения памяти на запрос.

Воевать с этим можно бесконечно, но если запросы написаны как попало, либо это целевая схема, то других решений нет. Сервер предполагает выделение памяти исходя из оценки количества строк в максимальной объеме одного из наборов данных согласно плана выполнения запроса.
...
Рейтинг: 0 / 0
23.04.2021, 14:50
    #40065224
Danion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Спасибо за ответы.
Статистика каждую ночь обновляется, но в прошлый раз вернулось в норму через день, а тут с понедельника тянется. Но хоть малое число запусков и систему не кладёт.
Посмотрю в понедельник как будет, OPTION RECOMPILE в каждый добавлять не хочется.
Может в сторону Resource Governor придётся смотреть.
...
Рейтинг: 0 / 0
23.04.2021, 15:16
    #40065234
Выделение оперативной памяти на запрос
Danion
Спасибо за ответы.
Статистика каждую ночь обновляется, но в прошлый раз вернулось в норму через день, а тут с понедельника тянется. Но хоть малое число запусков и систему не кладёт.
Посмотрю в понедельник как будет, OPTION RECOMPILE в каждый добавлять не хочется.
Может в сторону Resource Governor придётся смотреть.
В каждый не надо. Только в проблемные. Что мешает руками удалить из кэша план проблемного запроса и сразу увидеть результат? Можно весь кэш целиком сбросить. Хотя бы сразу будет видно, связана ли проблема с кривыми планами.
...
Рейтинг: 0 / 0
23.04.2021, 15:55
    #40065259
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Владислав Колосов
Danion,

если стабильно видите granted намного больше used, то настраивайте Resource Governor для ограничения максимальной квоты выделения памяти на запрос.

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


На оценку необходимого объема памяти, а в данном случае имеет место явная переоценка, влияет и размер полей (типы данных).
https://www.dbsophic.com/resources/sql-server-tuning-blog/post/21/variable-size-data-types-and-memory-grants
...
Рейтинг: 0 / 0
23.04.2021, 15:59
    #40065262
Выделение оперативной памяти на запрос
komrad
Владислав Колосов
Danion,

если стабильно видите granted намного больше used, то настраивайте Resource Governor для ограничения максимальной квоты выделения памяти на запрос.

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


На оценку необходимого объема памяти, а в данном случае имеет место явная переоценка, влияет и размер полей (типы данных).
https://www.dbsophic.com/resources/sql-server-tuning-blog/post/21/variable-size-data-types-and-memory-grants
И это может появляться после релоада сервера и через какое-то время самопроизвольно исчезать?
...
Рейтинг: 0 / 0
23.04.2021, 16:13
    #40065268
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Ведущий профессионал
И это может появляться после релоада сервера и через какое-то время самопроизвольно исчезать?

нет, просто к слову пришлось
...
Рейтинг: 0 / 0
24.04.2021, 09:24
    #40065405
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение оперативной памяти на запрос
Danion,

В проблемных запросах используются таблицы с колоночным сжатием?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выделение оперативной памяти на запрос / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]