Тестовая среда:
- Windows server 2008 R2 Enterprise
- MS SQL server 2008 R2
- 1С Предприятие 8.2.19.90
SQL properties:
Рисунок 1. SQL properties “General”
Рисунок 2. SQL properties “Advansed”
Инструменты:
- SQL server profiler
- SQL Query
- Консоль запросов 1С
Тестовый запрос:
ВЫБРАТЬ
АК.Наименование КАК Наименование
ИЗ
РегистрСведений.АдресныйКлассификатор КАК АК
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АК1
ПО АК.Код = АК1.Код
Подготовка:
Запускаем SQL server Profiler, устанавливаем соединение, отмечаем события и колонки как показано на рисунке 3.
Рисунок 3. Trace properties
Устанавливаем отбор для нашей базы
Рисунок 4. Фильтр по базе
Сокращения:
- Max degree of parallelism – MDOP
- Сost threshold for parallelism - cost
Тестирование последовательного плана запроса (MDOP = 1)
Далее, в среде 1С Предприятие в тестовой базе запускаем консоль запросов и выполняем запрос (Рис.5)
Рисунок 5. Консоль запросов – время выполнения 20 сек.
Параметр SQL сервера “Max degree of parallelism” установлен в 1 (без параллелизма). Смотрим результат в профайлере (рис.6)
Рисунок 6. Последовательный план запроса
SQL сервер сформировал последовательный план запроса, при этом: общая загрузка CPU = 6,750 (сек), а время на выполнение запроса = 7,097(сек)
Тестирование параллельного плана запроса (MDOP = 0, cost =5)
Переводим SQL server в режим параллелизма (в SQL Query):
USE master;
GO
EXEC sp_configure 'show advanced option', 1;
GO
RECONFIGURE WITH OVERRIDE
USE master;
GO
exec sp_configure'max degree of parallelism', 0;
GO
RECONFIGURE WITH OVERRIDE
Выполняем тот же запрос (Рисунок 7)
Рисунок 7. Консоль запросов – время выполнения 16 сек.
Проверяем результат в профайлере (Рисунок 8)
Рисунок 8. Параллельный план запроса
Сервер SQL в этот раз сформировал параллельный план запроса, при этом общая загрузка CPU = 7,905 сек, а длительность выполнения запроса = 3,458 сек
Тестирование последовательного плана запроса (MDOP = 0, cost = 150)
Попытаемся избавиться от параллельного плана, используя параметр «Сost threshold for parallelism». По умолчанию параметр установлен в 5. В нашем случае от формирования параллельного плана удалось избавиться при значении 150 (в SQL Query):
USE master;
GO
exec sp_configure 'cost threshold for parallelism', 150 ;
GO
Проверяем выполнение запроса в данных условиях (рис. 9)
Рисунок 9. Консоль запросов – время выполнения 20 сек.
Проверяем результат в профайлере (рис.10)
Рисунок 10. Последовательный план запроса.
Сервер SQL сформировал последовательный план запроса. Общая загрузка CPU = 7,171 сек, время выполнения запроса =7, 864 сек.
Выводы:
- Выполнение тестового запроса в среде 1С Предприятия с использованием SQL сервером параллельного плана запроса дает значительный прирост производительности по сравнению с последовательным планом (16 сек. против 20 сек. – выигрыш 4 сек.)
- Выполнения тестового запроса самим сервером SQL при использовании параллельного плана запроса происходит в два раза быстрее, чем при использовании последовательного плана запроса (3,5 сек. против 7,1 сек.)
- Параллелизм SQL сервера можно регулировать не только, используя параметр MDOP, но и параметр «Сost threshold for parallelism»
Начать дискуссию