База данных 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 необходима для работы некоторым подпрограммам.
См. также