Оптимизация параметров TEMPDB в MS SQL Server для нагруженных баз 1С
- Ожидания
PAGELATCH_UPилиPAGELATCH_SHв системных таблицах tempdb (PFS/GAM/SGAM страницы). - Падение производительности запросов, активно использующих конструкции
ПОМЕСТИТЬ ВоВременнуюТаблицу. - Внезапный рост очередей дисковой подсистемы, где расположен tempdb.
- Задержки при формировании тяжелых аналитических отчетов и проведении документов.
1. Расчет количества файлов данных tempdb
Создайте количество файлов данных tempdb, равное числу логических ядер процессора (до 8 ядер). Если ядер больше 8 — начните с 8 файлов и увеличивайте шагом по 4 файла при сохранении конкуренции:
ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev2', FILENAME = N'T:\TEMPDB\tempdev2.ndf', SIZE = 10GB, FILEGROWTH = 512MB);
ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev3', FILENAME = N'T:\TEMPDB\tempdev3.ndf', SIZE = 10GB, FILEGROWTH = 512MB);
ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev4', FILENAME = N'T:\TEMPDB\tempdev4.ndf', SIZE = 10GB, FILEGROWTH = 512MB);2. Выравнивание размеров и шага авторасширения
Все файлы данных tempdb должны иметь абсолютно одинаковый начальный размер и одинаковый шаг авторасширения (в мегабайтах, а не процентах) для работы алгоритма Proportional Fill:
ALTER DATABASE tempdb MODIFY FILE (NAME = N'tempdev', SIZE = 10GB, FILEGROWTH = 512MB);
ALTER DATABASE tempdb MODIFY FILE (NAME = N'templog', SIZE = 5GB, FILEGROWTH = 256MB);3. Размещение на быстром SSD/NVMe хранилище
Вынесите файлы tempdb на отдельный физический массив NVMe с форматированием NTFS с размером кластера (Allocation Unit Size) 64 KB.
4. Включение флагов трассировки (для версий до MS SQL 2016)
DBCC TRACEON (1117, 1118, -1);(В MS SQL Server 2016+ флаги T1117 и T1118 включены по умолчанию на уровне ядра СУБД).
Частые вопросы (FAQ)
Почему файлы tempdb должны быть строго одинакового размера?
SQL Server использует алгоритм пропорционального заполнения (Proportional Fill). Если один файл больше остальных, почти все операции временных таблиц 1С будут направляться в него, создавая узкое место в дисковых очередях.
Какой начальный размер задавать для файлов tempdb под 1С?
Рекомендуется задавать начальный размер, достаточный для дневной работы (от 20 до 100 ГБ суммарно), чтобы исключить деградацию производительности при динамическом авторасширении файлов.
Помогает ли Instant File Initialization (IFI) для tempdb?
Да, мгновенная инициализация файлов предотвращает обнуление выделяемого дискового пространства при авторасширении файлов данных (не действует на лог транзакций ldf).
Как проверить наличие очередей ожидания PAGELATCH в tempdb?
Выполните запрос к sys.dm_os_waiting_tasks с фильтром по wait_type LIKE 'PAGELATCH_%' and resource_description LIKE '2:%'.