powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Память используемая сессией
28 сообщений из 28, показаны все 2 страниц
Память используемая сессией
    #39862649
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, привет.

Подскажите пожалуйста, как узнать сколько памяти используется каждой сессией.

Есть представление sys.dm_exec_query_memory_grants в котором есть информация о памяти по сессиям, но там нет сессий, которым была выделена память и они в ней больше не нуждаются.

Есть представление sys.dm_os_buffer_descriptors в котором страницы объектов в памяти.

Можно ли как-то выйти на сессии?

Проблематика: Иногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.

-----------
Андрей.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862680
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinИногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Память в основном используется буферным пулом, а его невозможно разделить на сессии (то есть, если в 2х сессиях делается запрос к одним и тем же страницам данных, то получается, что обе сессии используют одну и ту же память)
В sys.dm_exec_query_memory_grants показывается память именно для выполнения запроса, так что туда смотреть нужно, если у вас не хватает памяти, например, для сортировки.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862700
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgBelkinИногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Память в основном используется буферным пулом, а его невозможно разделить на сессии (то есть, если в 2х сессиях делается запрос к одним и тем же страницам данных, то получается, что обе сессии используют одну и ту же память)
В sys.dm_exec_query_memory_grants показывается память именно для выполнения запроса, так что туда смотреть нужно, если у вас не хватает памяти, например, для сортировки.

Спасибо за ответ. Про буферный пул понятно.
Что касается sys.dm_exec_query_memory_grants , то на странице https://technet.microsoft.com/ru-ru/ms365393(v=sql.15) написано " Возвращает сведения обо всех запросах, которые запросили и ожидающих предоставления памяти или были присвоены предоставления памяти. В этом представлении не будут отображены запросы, которые не нуждаются в предоставлении памяти. "
Получается, что есть запросы, которые выполняются, но в том представлении не будут фигурировать. И как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862726
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinИ как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?
если запросу не нужна память, то он не может ее перерасходовать
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862737
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта view показывает запросы, которые уже получили память и выполняются.
Выполните этот запрос на своем сервере и все увидите сами:
Код: sql
1.
select * from sys.dm_exec_query_memory_grants
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862791
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinПроблематика: Иногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Лучше бы показали оригинальное сообщение об ошибке.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862794
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinИ как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?Вы же сами процитировали, что сессия расходует 0 памяти, и тогда она не отображается в представлении.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862828
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmBelkinПроблематика: Иногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Лучше бы показали оригинальное сообщение об ошибке.
не покажет.
там наверняка все написано, просто кто-то не читатель.
например,

Error: 1204, Severity: 19, State: 4.
The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time.
Rerun your statement when there are fewer active users.
Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862879
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgBelkinИ как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?Вы же сами процитировали, что сессия расходует 0 памяти, и тогда она не отображается в представлении.
Я как такового сообщения не наблюдал. Видел, что запросы выполнялись минутами вместо секунд.
При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is high"
Нет, чуток обманываю, пару раз при запуске запроса сам ловил, что-то типа того, что невозможно распределить память.

"Не нуждаются в предоставлении памяти" - я понимаю это так, им уже предоставлено все, что они требовали.

Тогда объясните мне пожалуйста, что за объем памяти для сессий указан в sys.dm_exec_query_memory_grants ? Сумма по колонке granted_memory_kb дает 2ГБ (это память именно на расчеты?), при этом в sys.dm_os_memory доступно около 10ГБ из 51ГБ
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862897
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belkin"Не нуждаются в предоставлении памяти" - я понимаю это так, им уже предоставлено все, что они требовали.

неправильно понимаете.
не нуждается, например, банальный селект из одной таблицы без сортировки.
зачем такому запросу memory grant?
у него ни соединений, ни сортировок.
читаешь и выплевываешь клиенту.
почитайте что ли Understanding SQL server memory grant
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862899
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinВидел, что запросы выполнялись минутами вместо секунд.

надо было смотреть ожидания.
может, ждал снятия блокировок.
может, ошибся в плане и пошел делать Nested Loops на миллионах строк.
тут вообще ни слова о памяти
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862925
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123BelkinВидел, что запросы выполнялись минутами вместо секунд.

надо было смотреть ожидания.
может, ждал снятия блокировок.
может, ошибся в плане и пошел делать Nested Loops на миллионах строк.
тут вообще ни слова о памяти

Проблема была с памятью!
Немного неверно написал в предыдущем сообщении
"При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is LOW""
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862936
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belkin"Не нуждаются в предоставлении памяти" - я понимаю это так, им уже предоставлено все, что они требовали.Нет, это значит, что им не нужна память для выполнения запроса.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862937
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belkin"При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is LOW""Где сообщение, в sys.dm_os_memory, или на экране Windows?
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862951
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgBelkin"При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is LOW""Где сообщение, в sys.dm_os_memory, или на экране Windows?
Сообщение, в sys.dm_os_memory
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862956
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belkinalexeyvgпропущено...
Где сообщение, в sys.dm_os_memory, или на экране Windows?
Сообщение, в sys.dm_os_memory
виртуалочка?
у нас тоже было LOW,
когда виртуалка отгребала серверную память.
накажите системиста, выдайте серверной учетке LOCK PAGES IN MEMORY
...
Рейтинг: 0 / 0
Память используемая сессией
    #39862962
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123Belkinпропущено...

Сообщение, в sys.dm_os_memory
виртуалочка?
у нас тоже было LOW,
когда виртуалка отгребала серверную память.
накажите системиста, выдайте серверной учетке LOCK PAGES IN MEMORYУгу, это не "нехватка памяти", а ненужная борьба за физическую память между приложениями через менеджер виртуальной памяти.
Нужно просто правильно настроить.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863042
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgYasha123пропущено...

виртуалочка?
у нас тоже было LOW,
когда виртуалка отгребала серверную память.
накажите системиста, выдайте серверной учетке LOCK PAGES IN MEMORYУгу, это не "нехватка памяти", а ненужная борьба за физическую память между приложениями через менеджер виртуальной памяти.
Нужно просто правильно настроить.

Коллеги, спасибо за подсказки.
Что меня до сих пор не успокаивает, это то, что проблему решили перезагрузкой Агента SQL Server. Как такое может быть?
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863066
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinЧто меня до сих пор не успокаивает, это то, что проблему решили перезагрузкой Агента SQL Server. Как такое может быть?Возможно, он что то запускал, потребляющее память, и это "что то" зависло. Какой нибудь DTS пакет.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863103
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belkinalexeyvgпропущено...
Угу, это не "нехватка памяти", а ненужная борьба за физическую память между приложениями через менеджер виртуальной памяти.
Нужно просто правильно настроить.

Коллеги, спасибо за подсказки.
Что меня до сих пор не успокаивает, это то, что проблему решили перезагрузкой Агента SQL Server. Как такое может быть?Чтобы понять как такое может быть нужно сначала выяснить в чем реально была проблема, а вы пока что далеки от этого потому что у вас "Проблема была с памятью!". Вы посмотрели хоть на что-нибудь еще кроме sys.dm_os_memory? Cpu, ожидания, блокировки, нагрузку на диски... ?
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863163
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinПроблема была с памятью!
Если на недельку запустить профилер по Degree of Parallelism с фильтром по "Integer Data", например, в гигабайт, то, возможно, узнаете много интересного о потребителях памяти и почему помог перезапуск SQL Agent. А может, и не узнаете...
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863177
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknownBelkinПроблема была с памятью!
Если на недельку запустить профилер по Degree of Parallelism с фильтром по "Integer Data", например, в гигабайт, то, возможно, узнаете много интересного о потребителях памяти и почему помог перезапуск SQL Agent. А может, и не узнаете...
ага, тогда и гадать не надо будет, кто же пожрал ресурсы сервера: тот самый профайлер
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863461
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123ага, тогда и гадать не надо будет, кто же пожрал ресурсы сервера: тот самый профайлерВы предполагаете, что у автора так много запросов на гигибайт, что профилер положит сервер? Ну, может быть...
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863525
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за подсказки!

Будем пробовать. Но дело в том, что у меня не так много прав, а к виртуалке нет вообще.
Но, как обычно, к сожалению, проблемой занимаются разработчики, а не админы...
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863535
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelkinВсем спасибо за подсказки!

Будем пробовать. Но дело в том, что у меня не так много прав, а к виртуалке нет вообще.
Но, как обычно, к сожалению, проблемой занимаются разработчики, а не админы...Это же чисто админские вопросы. Разработчик без прав пишет код, и не лазит в sys.dm_os_buffer_descriptors. А DBA решает проблемы с сервером.

"как обычно" - это всё слова, никто не заставит разработчика без прав ставить винды и настраивать маршрутизатор, попутно ругаясь с провайдером. Нет прав - нет администрирования.

Нужно просто сказать, что проблема решается такой то галочкой в настройках, но вы эту галочку крякать не имеете права, ибо на это есть специально уполномоченные Компанией сотрудники.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39863722
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот разработчик не "без прав".
у него как минимум view server state.
проверьте-ка
Код: sql
1.
2.
select *
from sys.fn_my_permissions(null, 'server');


может там и вовсе control server имеется, тогда можно очень даже развернуться
...
Рейтинг: 0 / 0
Память используемая сессией
    #39864252
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgBelkinВсем спасибо за подсказки!

Будем пробовать. Но дело в том, что у меня не так много прав, а к виртуалке нет вообще.
Но, как обычно, к сожалению, проблемой занимаются разработчики, а не админы...Это же чисто админские вопросы. Разработчик без прав пишет код, и не лазит в sys.dm_os_buffer_descriptors. А DBA решает проблемы с сервером.

"как обычно" - это всё слова, никто не заставит разработчика без прав ставить винды и настраивать маршрутизатор, попутно ругаясь с провайдером. Нет прав - нет администрирования.

Нужно просто сказать, что проблема решается такой то галочкой в настройках, но вы эту галочку крякать не имеете права, ибо на это есть специально уполномоченные Компанией сотрудники.Вы ей богу как будто живете в сказочной стране. Полно компаний где ДБА позиции (если такие вообще есть) занимают некомпетентные или просто ленивые люди. Которые любят говорить у нас все нормально, cpu 20% memory 55%, это проблема у вас в коде, вы программисты вы и фиксайте. Чтобы найти какую галочку поменять надо сначала провести расследование, а не у всех програмеров на это права есть. Да и даже если найти, ДБА могут сказать мы менять не будем, риски что-нибудь сломать слишком велики, а потом спрашивать будут с нас.
...
Рейтинг: 0 / 0
Память используемая сессией
    #39864297
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mindalexeyvgпропущено...
Это же чисто админские вопросы. Разработчик без прав пишет код, и не лазит в sys.dm_os_buffer_descriptors. А DBA решает проблемы с сервером.

"как обычно" - это всё слова, никто не заставит разработчика без прав ставить винды и настраивать маршрутизатор, попутно ругаясь с провайдером. Нет прав - нет администрирования.

Нужно просто сказать, что проблема решается такой то галочкой в настройках, но вы эту галочку крякать не имеете права, ибо на это есть специально уполномоченные Компанией сотрудники.Вы ей богу как будто живете в сказочной стране. Полно компаний где ДБА позиции (если такие вообще есть) занимают некомпетентные или просто ленивые люди. Которые любят говорить у нас все нормально, cpu 20% memory 55%, это проблема у вас в коде, вы программисты вы и фиксайте. Чтобы найти какую галочку поменять надо сначала провести расследование, а не у всех програмеров на это права есть. Да и даже если найти, ДБА могут сказать мы менять не будем, риски что-нибудь сломать слишком велики, а потом спрашивать будут с нас.Я всё это понимаю, но я же писал не про то, что так нужно решать проблему, а про то, что нужно уметь избегать назначения крайним за чужие косяки/бездействие.
Не надо даже начинать расследование проблем, нужно сразу открещиваться от попыток проводить "оптимизации" без админских прав.

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

Вообще не ввязываться в разговоры о производительности, продакшене, повторяя заклинание: "мы не знаем, не имеем права знать, что там происходит, нам это запретили"

И тогда либо все забьют, что и требуется, либо (если производительность на самом деле важна, либо дадут права, либо создадут межведомственную проектную группу (то есть инициируют проект "оптимизация"), в составе которой будут люди с правами, что тоже нормальный вариант.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Память используемая сессией
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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