Поделиться через


База данных tempdb

Системная база данных tempdb — это глобальный ресурс, доступный всем пользователям, подключенным к экземпляру SQL Server, который используется для хранения следующих данных:

  • Временные пользовательские объекты, которые создаются явным образом, например глобальные или локальные временные таблицы, временные хранимые процедуры, переменные таблицы или курсоры.

  • Внутренние объекты, созданные ядром СУБД SQL Server, например рабочие таблицы для хранения промежуточных результатов для spools или сортировки.

  • Версии строк, создаваемые транзакциями изменения данных в базе данных, которая использует фиксацию на уровне чтения с изоляцией версий строк или транзакциями изоляции моментальных снимков.

  • Версии строк, создаваемые транзакциями изменения данных для таких функций, как онлайновые индексные операции, несколько активных результирующих наборов (MARS) и триггеры AFTER.

Операции в tempdb регистрируются минимально. Это позволяет отменять транзакции. tempdb создается повторно при каждом запуске SQL Server, чтобы система всегда начиналась с чистой копии базы данных. Временные таблицы и хранимые процедуры удаляются автоматически при отключении и при завершении работы системы не активируются подключения. Таким образом, в tempdb никогда ничего не сохраняется из одного сеанса SQL Server в другой. Операции резервного копирования и восстановления не допускаются в tempdb.

Физические свойства tempdb

В следующей таблице перечислены начальные значения конфигурации файлов данных и журналов tempdb . Размеры этих файлов могут немного отличаться для разных выпусков SQL Server.

Файл Логическое имя Физическое имя Увеличение размера файлов
Первичные данные темпдев tempdb.mdf Автоматическое увеличение на 10 процентов до тех пор, пока диск не будет заполнен
Лог templog templog.ldf Автоматическое увеличение на 10 процентов до максимума 2 терабайта

Размер tempdb может повлиять на производительность системы. Например, если размер tempdb слишком мал, системная обработка может быть слишком занята автоматическим увеличением базы данных для поддержки требований рабочей нагрузки при каждом запуске SQL Server. Это можно избежать, увеличив размер tempdb.

Улучшения производительности в tempdb

В SQL Server производительность tempdb улучшается следующим образом:

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

  • Улучшен протокол блокировки страницы выделения. Это уменьшает количество защелок UP (update), которые используются.

  • Затраты на ведение журнала для tempdb уменьшены. Это снижает потребление пропускной способности ввода-вывода диска в файле журнала tempdb .

  • Улучшен алгоритм выделения смешанных страниц в tempdb .

Перемещение файлов данных и журналов tempdb

Сведения о перемещении данных tempdb и файлов журналов см. в разделе "Перемещение системных баз данных".

Параметры базы данных

В следующей таблице перечислены значения по умолчанию для каждого параметра базы данных в базе данных tempdb и возможность изменения параметра. Чтобы просмотреть текущие настройки этих параметров, используйте представление каталога sys.databases .

Параметр базы данных Значение по умолчанию Можно изменить
ALLOW_SNAPSHOT_ISOLATION выкл. Да
ANSI_NULL_DEFAULT выкл. Да
ANSI_NULLS выкл. Да
ANSI_PADDING выкл. Да
ANSI_WARNINGS выкл. Да
ARITHABORT выкл. Да
АВТО_ЗАКРЫТИЕ выкл. нет
AUTO_CREATE_STATISTICS НА Да
AUTO_SHRINK выкл. нет
АВТОМАТИЧЕСКОЕ_ОБНОВЛЕНИЕ_СТАТИСТИКИ НА Да
AUTO_UPDATE_STATISTICS_ASYNC выкл. Да
Отслеживание изменений выкл. нет
CONCAT_NULL_YIELDS_NULL (объединение NULL возвращает NULL) выкл. Да
Закрытие курсора при фиксации выкл. Да
CURSOR_DEFAULT Глобальный Да
Параметры доступности базы данных ОНЛАЙН

МУЛЬТИПОЛЬЗОВАТЕЛЬСКИЙ

Чтение и запись
нет

нет

нет
ОПТИМИЗАЦИЯ_КОРРЕЛЯЦИИ_ДАТ выкл. Да
DB_CHAINING НА нет
ШИФРОВАНИЕ выкл. нет
Прерывание округления числовых данных выкл. Да
ВЕРИФИКАЦИЯ_СТРАНИЦЫ КОНТРОЛЬНАЯ СУММА для новых инсталляций SQL Server.

Обновления для SQL Server не предусмотрены.
Да
ПАРАМЕТРИЗАЦИЯ ПРОСТОЙ Да
Кавычечный идентификатор выкл. Да
READ_COMMITTED_SNAPSHOT выкл. нет
ВЫЗДОРОВЛЕНИЕ ПРОСТОЙ нет
Рекурсивные_Триггеры выкл. Да
Опции службы Service Broker ENABLE_BROKER Да
НАДЕЖНЫЙ выкл. нет

Описание этих баз данных см. в статье Параметры ALTER DATABASE SET (Transact-SQL).

Ограничения

Следующие операции нельзя выполнить в базе данных tempdb :

  • Добавление файловых групп.

  • Резервное копирование или восстановление базы данных.

  • Изменение параметров сортировки. Параметрами сортировки по умолчанию являются параметры сортировки сервера.

  • Изменение владельца базы данных. tempdb принадлежит sa.

  • Создание моментального снимка базы данных.

  • Прекращение использования базы данных.

  • Удаление пользователя guest из базы данных.

  • Включение отслеживания измененных данных.

  • Участие в зеркалировании базы данных.

  • Удаление первичной файловой группы, первичного файла данных или файла журнала.

  • Переименование базы данных или первичной файловой группы.

  • Запуск DBCC CHECKALLOC.

  • Запуск DBCC CHECKCATALOG.

  • Перевод базы данных в режим OFFLINE.

  • Установка базы данных или основной файловой группы на READ_ONLY.

Разрешения

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

Параметр SORT_IN_TEMPDB для индексов

Системные базы данных

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

Перемещение файлов базы данных

См. также

Работа с tempdb в SQL Server 2005