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


База данных tempdb

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

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

  • внутренние объекты, создаваемые SQL Server Database Engine, например рабочие таблицы, хранящие промежуточные результаты буферов или сортировки;

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

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

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

Физические свойства базы данных tempdb

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

Файл

Логическое имя

Физическое имя

Увеличение размера файла

Первичные данные

tempdev

tempdb.mdf

Автоматическое увеличение на 10 % до заполнения диска

Журнал

templog

templog.ldf

Автоматическое увеличение на 10 % до максимального размера в 2 ТБ

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

Увеличение производительности базы данных tempdb

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

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

  • Усовершенствован протокол кратковременных блокировок выделения страниц. При этом снижается количество используемых кратковременных блокировок UP (обновление).

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

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

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

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

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

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

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

Значение по умолчанию

Можно ли изменить

ALLOW_SNAPSHOT_ISOLATION

OFF

Да

ANSI_NULL_DEFAULT

OFF

Да

ANSI_NULLS

OFF

Да

ANSI_PADDING

OFF

Да

ANSI_WARNINGS

OFF

Да

ARITHABORT

OFF

Да

AUTO_CLOSE

OFF

Нет

AUTO_CREATE_STATISTICS

ON

Да

AUTO_SHRINK

OFF

Нет

AUTO_UPDATE_STATISTICS

ON

Да

AUTO_UPDATE_STATISTICS_ASYNC

OFF

Да

CHANGE_TRACKING

OFF

Нет

CONCAT_NULL_YIELDS_NULL

OFF

Да

CURSOR_CLOSE_ON_COMMIT

OFF

Да

CURSOR_DEFAULT

GLOBAL

Да

Параметры доступности базы данных

ONLINE

MULTI_USER

READ_WRITE

Нет

Нет

Нет

DATE_CORRELATION_OPTIMIZATION

OFF

Да

DB_CHAINING

ON

Нет

ENCRYPTION

OFF

Нет

NUMERIC_ROUNDABORT

OFF

Да

PAGE_VERIFY

Значение CHECKSUM для новых установок SQL Server.

Значение NONE для обновлений SQL Server.

Да

PARAMETERIZATION

SIMPLE

Да

QUOTED_IDENTIFIER

OFF

Да

READ_COMMITTED_SNAPSHOT

OFF

Нет

RECOVERY

SIMPLE

Нет

RECURSIVE_TRIGGERS

OFF

Да

Параметры компонента Service Broker

ENABLE_BROKER

Да

TRUSTWORTHY

OFF

Нет

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

Ограничения

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

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

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

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

  • Изменение владельца базы данных. Владельцем базы данных tempdb является dbo.

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

  • Удаление базы данных.

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

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

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

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

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

  • Выполнение инструкции DBCC CHECKALLOC.

  • Выполнение инструкции DBCC CHECKCATALOG.

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

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

Разрешения

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