Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Системная база данных 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.master_files (Transact-SQL)
Перемещение файлов базы данных