Гайд 1С: Тюнинг Cost Threshold for Parallelism в MS SQL Server
- Высокие ожидания
CXPACKETиCXCONSUMERв мониторинге производительности SQL Server. - Легкие и короткие OLTP-запросы 1С начинают выполняться параллельно, создавая оверхед на координацию потоков.
- Скачки загрузки CPU при выполнении типовых действий пользователей (проведение накладных, открытие форм).
1. Проблема значения по умолчанию
По умолчанию в MS SQL Server параметр Cost Threshold for Parallelism установлен в значение 5. Это значение было разработано для дисковых подсистем 1990-х годов. В современных реалиях 1С запрос со стоимостью 5 является слишком простым, и затраты процессора на распараллеливание и синхронизацию потоков превышают выигрыш от параллельного выполнения.
2. Рекомендуемые значения для 1С
Для высоконагруженных баз 1С:Предприятие рекомендованный диапазон составляет от 40 до 50.
3. Пошаговая настройка через T-SQL
-- Включение расширенных параметров конфигурации
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
-- Установка оптимального порога стоимости для параллелизма
EXEC sp_configure 'cost threshold for parallelism', 45;
RECONFIGURE;
GO4. Проверка примененного значения
SELECT name, value, value_in_use
FROM sys.configurations
WHERE name = 'cost threshold for parallelism'; Частые вопросы (FAQ)
Требуется ли перезапуск службы SQL Server после изменения этого параметра?
Нет, параметр применяется мгновенно 'на лету' для всех вновь компилируемых планов выполнения запросов после вызова команды RECONFIGURE.
Что означает 'стоимость запроса' (Query Cost) в MS SQL?
Это абстрактная внутренняя оценка оптимизатора стоимости ресурсов (CPU и I/O), необходимых для выполнения данного плана запроса.
Как этот параметр взаимодействует с MAXDOP?
Параметр Cost Threshold for Parallelism определяет, ПРИ КАКОЙ стоимости план станет параллельным, а MAXDOP определяет, СКОЛЬКО потоков процессора будет выделено под этот параллельный план.
Может ли увеличение порога замедлить тяжелые аналитические отчеты?
Если отчет действительно тяжелый (стоимость > 50), он продолжит выполняться параллельно на всех разрешенных ядрах. Порог отсекает только мелкие транзакции проведения документов 1С.