Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2025 (17.x) и более поздних версий
При включении tempdb управления ресурсами пространства вы повышаете надежность и избегаете сбоев, предотвращая неконтролируемое потребление большого объема пространства в tempdb запросами или рабочими нагрузками.
Начиная с SQL Server 2025 (17.x), вы можете использовать регулятор ресурсов для принудительного tempdb применения ограничения общего объема пространства, потребляемого группой рабочей нагрузки. Группу рабочей нагрузки можно связать с приложением, пользователем, группой пользователей и т. д. Когда запрос (запрос) пытается превысить ограничение, регулятор ресурсов прерывает его с определенной ошибкой, указывающей, что ограничение группы рабочей нагрузки было применено.
В действительности, вы можете разделить общее tempdb пространство между различными рабочими нагрузками. Например, можно задать более высокий предел для группы рабочей нагрузки, используемой критически важным приложением, и задать более низкий предел для default группы рабочих нагрузок, используемой всеми другими рабочими нагрузками.
Пошаговые примеры конфигурации см. в руководстве. Примеры настройки управления ресурсами пространства tempdb.
Начало работы с регулятором ресурсов
Регулятор ресурсов предоставляет гибкую платформу для установки различных tempdb ограничений пространства для различных приложений, пользователей, групп пользователей и т. д. Можно также задать ограничения на основе пользовательской логики.
Если вы не знакомы с регулятором ресурсов в SQL Server, ознакомьтесь с разделом "Регулятор ресурсов ", чтобы узнать о его концепциях и возможностях.
Пошаговое руководство по настройке регулятора ресурсов и рекомендации см. в руководстве. Примеры конфигурации регулятора ресурсов и рекомендации.
Установка ограничений на потребление пространства tempdb
Вы можете ограничить tempdb потребление пространства группой рабочей нагрузки одним из двух способов:
Задайте фиксированное ограничение с помощью аргумента
GROUP_MAX_TEMPDB_DATA_MB.Фиксированное ограничение полезно, если требования к использованию рабочей нагрузки
tempdbизвестны заранее или когдаtempdbразмер не изменяется.Задайте ограничение процента с помощью аргумента
GROUP_MAX_TEMPDB_DATA_PERCENT.Ограничение процента полезно, если вы хотите изменить максимальный размер
tempdbс течением времени, и необходимо, чтобы пространствоtempdb, доступное каждой группе нагрузки, пропорционально изменялось без перенастройки регулятора ресурсов. Например, если вы масштабируете виртуальную машину Azure под управлением SQL Server и увеличиваете максимальныйtempdbразмер, пространство,tempdbдоступное для каждой группы рабочих нагрузок с ограничением процента, также увеличивается.
Дополнительные сведения о параметрах GROUP_MAX_TEMPDB_DATA_MB и аргументах GROUP_MAX_TEMPDB_DATA_PERCENT см. в разделе CREATE WORKLOAD GROUP или ALTER WORKLOAD GROUP.
Если для одной и той же группы рабочей нагрузки заданы фиксированные и процентные ограничения, фиксированное ограничение имеет приоритет над ограничением процента.
В данном экземпляре SQL Server можно использовать сочетание групп рабочих нагрузок с фиксированными ограничениями, процентными ограничениями или без ограничений на tempdb потребление пространства.
Конфигурация ограничения процента
Ограничения в процентах действуют только в том случае, если конфигурация файла данных tempdb соответствует требованиям, приведенным в следующей таблице.
| Конфигурация | Описание | Максимальный размер tempdb (100%) | Действует процентный лимит |
|---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB не задано— Для всех файлов данных MAXSIZE не является UNLIMITED— Для всех файлов данных FILEGROWTH не равно нулю. |
tempdb Файлы данных могут автоматически увеличиваться до максимального размера. |
Сумма значений MAXSIZE для всех файлов данных |
Да |
-
GROUP_MAX_TEMPDB_DATA_MB не заданоДля всех файлов данных MAXSIZE является UNLIMITED— Для всех файлов FILEGROWTH данных равно нулю. |
tempdb Файлы данных преумножены до их предполагаемых размеров и не могут увеличиваться дальше. |
Сумма значений SIZE для всех файлов данных |
Да |
| Все остальные конфигурации | нет |
Следующий запрос позволяет просмотреть текущую tempdb конфигурацию файла данных:
SELECT file_id,
name,
size * 8. / 1024 AS size_mb,
IIF(max_size = -1, NULL, max_size * 8. / 1024) AS maxsize_mb,
IIF(is_percent_growth = 0, growth * 8. / 1024, NULL) AS filegrowth_mb,
IIF(is_percent_growth = 1, growth, NULL) AS filegrowth_percent
FROM sys.master_files
WHERE database_id = 2
AND
type_desc = 'ROWS';
Для заданного файла в результирующем наборе:
-
maxsize_mbЕсли столбец имеет значениеNULL, тоMAXSIZEестьUNLIMITED. - Если
filegrowth_mbилиfilegrowth_percentравно нулю, тоFILEGROWTHравно нулю.
Если вы устанавливаете GROUP_MAX_TEMPDB_DATA_PERCENT и выполняете инструкцию ALTER RESOURCE GOVERNOR RECONFIGURE, но конфигурация файла данных не соответствует требованиям, инструкция успешно завершается, пределы процентов сохраняются, но не применяются. В этом случае вы получаете предупреждение 10989, серьезность 10, GROUP_MAX_TEMPDB_DATA_PERCENT не действует, так как требования к конфигурации tempdb не выполнены. Сообщение также регистрируется в журнале ошибок.
Чтобы границы процента стали эффективными, перенастройте tempdb файлы данных в соответствии с требованиями и выполните ALTER RESOURCE GOVERNOR RECONFIGURE заново. Дополнительные сведения о настройке SIZE, FILEGROWTH и MAXSIZE см. в разделе ALTER DATABASE: параметры файлов и файловых групп.
Замечание
Для нового экземпляра SQL Server файл MAXSIZE данных составляет UNLIMITED, а FILEGROWTH больше нуля, что означает, что ограничения процента не эффективны. Чтобы использовать ограничения процента, необходимо выполнить следующие действия.
- Предварительное увеличение
tempdbфайлов данных до их предполагаемых размеров и присвоениеFILEGROWTHнулю. -
MAXSIZEЗадайте для каждого файла данных ограниченное значение.Для каждого тома данных
tempdbубедитесь, что сумма значенийMAXSIZEдля файлов на томе меньше либо равна доступному свободному пространству диска на томе.Например, если том имеет 100 ГБ свободного места и имеет два
tempdbфайла данных, сделайтеMAXSIZEкаждый файл размером 50 ГБ или меньше.
Если ограничение процента действует, и вы добавляете, удаляете или изменяете размер tempdb файлов данных, необходимо выполнить обновление ALTER RESOURCE GOVERNOR RECONFIGURE регулятора ресурсов с новым максимальным размером tempdb (100%).
Принцип работы
В этом разделе подробно описано tempdb управление ресурсами пространства.
Когда страницы данных в
tempdbвыделяются и освобождаются, диспетчер ресурсов ведет учет пространстваtempdb, потребляемого каждой группой рабочей нагрузки.Если регулятор ресурсов включен, а
tempdbдля группы рабочей нагрузки задано ограничение потребления пространства, и запрос, выполняемый в группе рабочей нагрузки, пытается привести общееtempdbпотребление пространства группой выше предела, запрос прерывается с ошибкой 1138, серьезностью 17, не удалось выделить новую страницу для базы данных 'tempdb', так как это превысит установленный предел для группы рабочей нагрузки 'workload-group-name'.При прерывании запроса с ошибкой 1138 значение в столбце
total_tempdb_data_limit_violation_countдинамического административного представления sys.dm_resource_governor_workload_groups DMV увеличивается на один, а расширенное событие запускается.Регулятор ресурсов отслеживает все
tempdbиспользование, которое может быть связано с группой рабочих нагрузок, включая временные таблицы, переменные (включая табличные переменные), параметры со значениями таблиц, невременные таблицы, курсоры и использование, связанное с обработкой запросов, например, спули, разливы, рабочие таблицы иtempdbрабочие файлы.Потребление пространства для глобальных временных таблиц и нетемпорарных таблиц
tempdbучитывается в группе рабочей нагрузки, которая вставляет первую строку в таблицу, даже если сеансы в других группах рабочих нагрузок добавляют, изменяют или удаляют строки в той же таблице.Ограничения потребления
tempdb, настроенные для каждой группы рабочих нагрузок, представлены в представлении каталога sys.resource_governor_workload_groups в столбцахgroup_max_tempdb_data_mbиgroup_max_tempdb_data_percent.Текущее потребление и пиковое потребление пространства
tempdbгруппой рабочей нагрузки отображаются в представлении sys.dm_resource_governor_workload_groups DMV, в столбцахtempdb_data_space_kbиpeak_tempdb_data_space_kbсоответственно.Подсказка
tempdb_data_space_kbиpeak_tempdb_data_space_kbстолбцы в sys.dm_resource_governor_workload_groups поддерживаются, даже если ограничения наtempdbпотребление пространства не заданы.Вы можете создать функцию классификатора и группы рабочей нагрузки без первоначального задания ограничений. Отслеживайте
tempdbиспользование каждой группы с течением времени, чтобы установить репрезентативные шаблоны использования, а затем задать ограничения по мере необходимости.TempdbИспользование хранилищами версий, включая постоянное хранилище версий (PVS) при включенном ускоренном восстановлении базы данных (ADR), не регулируется, так как версии строк могут использоваться запросами в нескольких группах рабочих нагрузок.tempdbПотребление
tempdbпространства учитывается как количество используемых страниц данных размером 8 КБ. Даже если страница не полностью заполнена данными, она добавляет 8 КБ кtempdbпотреблению группы рабочей нагрузки.TempdbУчет пространства поддерживается на протяжении всего срока существования группы рабочей нагрузки. Если группа рабочей нагрузки удаляется, но глобальные временные таблицы или нетемпоральные таблицы с данными, которые относятся к этой группе, остаются вtempdb, пространство, используемое этими таблицами, не учитывается в другой группе рабочих нагрузок.TempdbУправление ресурсами пространства управляет пространством вtempdbфайлах данных, но не дисковом пространстве на базовых томах. Если вы не будете предварительно увеличиватьtempdbфайлы данных до их предполагаемых размеров, пространство в томах, гдеtempdbнаходится, может использоваться другими файлами. Если нет свободного места дляtempdbрасширения файлов данных, возможно, пространство наtempdbзакончится прежде чем будет достигнуто любое ограничение группы нагрузки наtempdbпотребление пространства.Управление космическими ресурсами
tempdbприменяется к файлам данных, но не к файлу журнала транзакций. Чтобы гарантировать, что журналtempdbтранзакций не потребляет много места, включите ADR вtempdb.
Различия с отслеживанием пространства на уровне сеанса
Sys.dm_db_session_space_usage DMV предоставляет tempdb статистику распределения и освобождения пространства для каждого сеанса. Даже если в группе рабочей нагрузки имеется только один сеанс, статистика использования пространства, представленная этим динамическим административным представлением, может не полностью соответствовать статистике, указанной в представлении sys.dm_resource_governor_workload_groups, по следующим причинам:
- В отличие от
sys.dm_resource_governor_workload_groups:sys.dm_db_session_space_usage- Не отражает
tempdbиспользование пространства памяти текущими запущенными задачами.sys.dm_db_session_space_usageСтатистика обновляется при завершении задачи. Статистика постоянноsys.dm_resource_governor_workload_groupsобновляется. - Не отслеживает страницы карты распределения индекса (IAM). Дополнительные сведения см. в руководстве по архитектуре Pages и экстентов.
- Не отражает
- После удаления строк или при удалении таблицы, индекса или секции страницы данных могут быть освобождены асинхронным фоновым процессом. Это перемещение страницы может произойти с задержкой.
sys.dm_resource_governor_workload_groupsотражает эти освобождения страниц по мере их возникновения, даже если сеанс, вызвавший эти освобождения, был закрыт и больше не присутствует вsys.dm_db_session_space_usage.
Рекомендации по управлению ресурсами пространства tempdb
Прежде чем настраивать tempdb управление ресурсами пространства, ознакомьтесь со следующими рекомендациями.
Ознакомьтесь с общими рекомендациями для регулятора ресурсов.
Для большинства сценариев избегайте установки
tempdbограничения потребления пространства на небольшое или нулевое значение, особенно дляdefaultгруппы рабочей нагрузки. Если это сделать, многие распространенные задачи могут начать сбоить, если им необходимо выделить пространство вtempdb. Например, если задать фиксированное или процентное ограничение на 0 дляdefaultгруппы рабочей нагрузки, возможно, не удается открыть обозреватель объектов в SQL Server Management Studio (SSMS).Если вы не создали пользовательские группы задач и функцию классификации, которая распределяет задачи по выделенным группам, избегайте ограничений использования
tempdbгруппой задачdefault. Это может прервать запросы с ошибкой 1138, еслиtempdbимеет неиспользуемое пространство, которое не может быть использовано никакой пользовательской нагрузкой.Допускается, чтобы сумма значений для всех групп рабочих
GROUP_MAX_TEMPDB_DATA_MBнагрузок превышала максимальныйtempdbразмер. Например, если максимальныйtempdbразмер составляет 100 ГБ,GROUP_MAX_TEMPDB_DATA_MBограничения для группы рабочей нагрузки A и группы рабочей нагрузки B могут составлять 80 ГБ.Этот подход по-прежнему запрещает каждой группе рабочих нагрузок использовать всё пространство в
tempdb, оставив 20 ГБ для других групп. В то же время вы избегаете ненужных прерываний запросов, если свободноеtempdbпространство по-прежнему доступно, так как группы рабочей нагрузки A и B , скорее всего, не используют большое количествоtempdbместа одновременно.Аналогичным образом сумма значений
GROUP_MAX_TEMPDB_DATA_PERCENTдля всех рабочих групп нагрузок может превышать 100 процентов. Вы можете выделить большеtempdbместа для каждой группы, если вы знаете, что несколько групп вряд ли вызывают высокуюtempdbзагрузку одновременно.
Связанный контент
- Руководство. Примеры настройки управления ресурсами пространства tempdb
- Диспетчер ресурсов
- руководство по . Примеры конфигурации регулятора ресурсов и рекомендации
- ALTER RESOURCE GOVERNOR
- СОЗДАНИЕ ГРУППЫ НАГРУЗКИ
- ИЗМЕНИТЬ ГРУППУ НАГРУЗКИ
- УДАЛИТЬ ГРУППУ РАБОЧЕЙ НАГРУЗКИ
- sys.resource_governor_workload_groups
- sys.dm_resource_governor_workload_groups