powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Память Maximum Server < sum(Workspace) ?
12 сообщений из 12, страница 1 из 1
Память Maximum Server < sum(Workspace) ?
    #39772421
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что происходит, когда приходит несколько запросов, требующих в сумме workspace memory больше, чем дано серверу? Превышающие доступную память ждут, не накладывая блокировки на данные?
BOLDegree of Parallelism (Integer Data)
The amount of "workspace memory" in kilobytes that the query has been granted to perform operations involving hashing, sorts or create index operations. The memory will be acquired during execution as needed.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772435
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

Ну как я это понимаю:
Память выделяется исходя из "текущей"(ну практически) доступной.
Если запрос начал и памяти не хватило - в tempdb, если не хватает то будет висеть ожидание RESOURCE_SEMAPHORE. До выделения ресурсов ничего не блокирует. Но может я и не прав
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772445
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

какие уж блокировки, если запрос не может получить затребованную память. Насколько я видел, картина такая: жирные запросы забирают грантами большую часть память, а мелкие запросы "толкаются локтями" и ждут очереди. При этом производительность для многих пользователей значительно снижается.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772479
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKПамять выделяется исходя из "текущей"(ну практически) доступной.
Если запрос начал и памяти не хватило - в tempdb, если не хватает то будет висеть ожидание RESOURCE_SEMAPHORE. До выделения ресурсов ничего не блокирует. Но может я и не прав
wait_typewaiting_tasks_countwait_time_msmax_wait_time_mssignal_wait_time_msRESOURCE_SEMAPHORE0000SOSHOST_SEMAPHORE0000CLR_SEMAPHORE0000RESOURCE_SEMAPHORE_MUTEX0000RESOURCE_SEMAPHORE_QUERY_COMPILE0000DISPATCHER_QUEUE_SEMAPHORE1748749223652059261149131DISPATCHER_PRIORITY_QUEUE_SEMAPHORE0000PWAIT_RESOURCE_SEMAPHORE_FT_PARALLEL_QUERY_SYNC0000
Видно ли здесь что? К сожалению, сервер был перезагружен. Та ситуация пока не повторялась.

Владислав Колосовкакие уж блокировки, если запрос не может получить затребованную память. Насколько я видел, картина такая: жирные запросы забирают грантами большую часть память, а мелкие запросы "толкаются локтями" и ждут очереди. При этом производительность для многих пользователей значительно снижается. Так и есть.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772566
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

Вы увидите большие ожидания RESOURCE_SEMAPHORE, это ни с чем не спутаешь. Ну и как уже сказали, блокировок данных не будет, процессы будут ждать выделения памяти перед тем как начнется выполнение. Быстро будут выполнятся только запросы попадающие в Small Resource Semaphore (стоимость меньше 3 и требующие памяти меньше 5МБ).

Если вам нужно увидеть что в общем происходит с памятью в настоящий момент, то попробуйте приаттаченный запрос. В вашем случае будет примерно следующее:
"Memory Grants Pending" > 0
"Granted Workspace Memory" будет приближаться к "Maximum Workspace Memory"
При этом, если сервер очень сильно переоценил количество строк то "Used Workspace Memory" может быть ощутимо меньше чем "Granted Workspace Memory". Но все равно процессы будут ждать, потому что уже выделенная память не вернется в пул пока не завершится запрос.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772612
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MindЕсли вам нужно увидеть что в общем происходит с памятью в настоящий момент, то попробуйте приаттаченный запрос.Благодарю, замечательный запрос.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772616
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

кстати, если вы можете выделить запросы которые убивают вашу память, то вполне решение через resource governor выделить под них пул и пусть сами толкаются
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39772959
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

настройте resource governor, если гранты намного больше фактического использования и нет возможности заниматься микротюнингом запросов.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39773187
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKкстати, если вы можете выделить запросы которые убивают вашу память, то вполне решение через resource governor выделить под них пул и пусть сами толкаютсяПоверхностно почитал на эту тему. Не уверен, что смогу. OLTP приложение гонит малотребующие и многотребующие запросы в одном действии. Эти действия выполняют почти все пользователи. Пока не ясно как разделить.

Кстати, что будет на Express, если запрос на Standard требует, например, 4.5ГБ памяти? Существуют ли запросы(без хинтов), которые Express не может выполнить, а Standard может, пусть и с другим автоматическим планом от оптимизатора.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39773200
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

oltp и 4,5Гб запросы :)

авторExpress не может выполнить, а Standard может, пусть и с другим автоматическим планом от оптимизатора.
почему не сможет? для всего остального есть mastercardtempdb
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39773235
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

требует и потребляет - две большие разницы.
...
Рейтинг: 0 / 0
Память Maximum Server < sum(Workspace) ?
    #39773598
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknownКстати, что будет на Express, если запрос на Standard требует, например, 4.5ГБ памяти? Существуют ли запросы(без хинтов), которые Express не может выполнить, а Standard может, пусть и с другим автоматическим планом от оптимизатора.
sys.dm_exec_query_memory_grants required_memory_kb - Minimum memory required to run this query in kilobytes. requested_memory_kb is the same or larger than this amount. - Обычно это пара мегабайт, то без чего запрос вообще не сможет выполниться, все что не влезет просто будет "сливаться" в tempdb.

requested_memory_kb - Total requested amount of memory in kilobytes.

granted_memory_kb - Total amount of memory actually granted in kilobytes. Can be NULL if the memory is not granted yet. For a typical situation, this value should be the same as requested_memory_kb.

used_memory_kb - Physical memory used at this moment in kilobytes.
По дефолту, requested_memory_kb не может быть больше 25% от Maximum Workspace Memory. Чем меньше памяти на сервере тем меньше будет запрошено. При таких настройках на сервере не может одновременно выполнятся больше 4-х тяжелых запросов, на практике это обычно 3, остальные уже не влазят. Поменяйте в RG для дефолтного пула [Memory grant %] с 25% на 10% и у вас будет выполнятся одновременно 9-10 таких запросов и можно ничего не делить на разные пулы. Естественно если такие запросы реально потребляют столько памяти (used_memory_kb), то выполнятся они будут медленнее. Зато все остальное не встянет колом. Ну и ждите повышенной нагрузки на tempdb.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Память Maximum Server < sum(Workspace) ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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