Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_PAGELATCH_TEMPDB 1С:Предприятие и СУБД

Оптимизация параметров TEMPDB в MS SQL Server для нагруженных баз 1С

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ожидания 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 включены по умолчанию на уровне ядра СУБД).

💡 Практика специалистов: Никогда не размещайте tempdb на одном физическом RAID-массиве с базой 1С или ее журналом транзакций. Для крупных баз 1С выделенный быстрый NVMe под tempdb дает до 40% прироста скорости выполнения пакетных запросов.

Частые вопросы (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:%'.

Полезные материалы
Рекомендуем