Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Анализ производительности запросов на уровне СУБД

Ранее, я рассматривал, причины неоптимальной работы запросов в 1С. Однако, эти действия иногда могут не помочь в борьбе за повышение производительности системы. В этом случае, необходимо обратиться к внесистемным средствам анализа  на уровне СУБД, к SQL Server Profiler. Работа с профайлером

Приложение SQL Server Profiler — это графический пользовательский интерфейс для трассировки SQL, с помощью которого программист 1С может наблюдать за экземпляром компонента Компонент Database Engine или службами Analysis Services. С помощью данной утилиты, мы может анализировать план выполнения запроса в пошаговом режиме. Приложение позволяет собирать и сохранять данные о каждом событии в файле или в таблице для последующего анализа.

Получите 267 видеоуроков по 1С бесплатно:

Признаки выбора неоптимального плана запроса СУБД

Как правило, MS SQL подбирает для 1С оптимальный план запроса, но бывает СУБД ошибается. Связано это может быть, например, с неактуальной статистикой или высокой загруженностью системы. Программисту 1С, для того, что бы помочь оптимизатору строить правильный план запроса, необходимо проверить настройку регламентных операция на СУБД MS SQL. Среди признаков неоптимального построения плана запроса для 1С могут быть конструкции:

  • NESTED LOOPS
  • SCAN (TABLE SCAN, INDEX SCAN, CLUSTERED INDEX SCAN)
  • SEEK … WHERE

NESTED LOOPS

Алгоритм соединения вложенными циклами, по сути своей, это простой перебор двух таблиц и вывод удовлетворяющих соединению строк. Данный вид соединения недопустим для ведущей таблицы, с большим количество записей. Однако данный вид соединения самый простой и часто используется когда СУБД MS SQL не может подобрать другой вариант соединения. В целом, NESTED LOOPS допустим к использованию, когда в ведущей таблице не более двух записей и скорее всего он быстрее отработает в такой ситуации.

SCAN

Сканирование таблицы или индекса. К этому признаку относятся — TABLE SCAN, INDEX SCAN, CLUSTERED INDEX SCAN. Скорость этого метода очень сильно зависит от количества записей в системе. Однако, сканирование само по себе не является ошибкой. Сканирование может негативно сказываться в случаях когда таблица содержит большое количество записей, а запрос возвращает незначительное количество записей. Т.е по сути СУБД впустую тратит ресурсы.

SEEK … WHERE

Аналог сканирования (SCAN), за тем исключением, что сканируется часть таблицы, по установленному условию.

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Добавить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*