Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: Предварительная версия 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