Бесплатный мини-курс «Поиск медленных запросов и 4 приема их оптимизации».

Занятие 2: Как анализировать запросы без контекста и работать с индексами

Доброго дня, коллеги!

В предыдущем занятии мы уже разобрали, как «поймать» медленные запросы, а также подготовили инструмент Монитор для работы.

Если Вы еще не успели посмотреть первое видео, обязательно вернитесь к нему, прежде чем переходить к новым материалам курса.

Занятие 2. Как анализировать запросы без контекста и работать с индексами

В это занятии мы:

  • Рассмотрим пример запроса с поиском без индекса и на его примере научимся проводить анализ
  • Увидим, как запрос отображается в Мониторе
  • Разберем, почему у запроса может не быть контекста
  • Узнаем, как создавать индексы и как ускорить реструктуризацию
  • Обсудим минусы индексов
  • Познакомимся с составными индексами, разберем, как они работают и как писать условия, попадающие в индексы.

Тайминг ключевых моментов видео:

00:00 — причины выполнения запросов без контекста
06:02 — определение наличия и состава индексов
09:04 — влияние индексов на запросы
11:09 — минусы индексов
11:39 — создание индекса с реструктуризацией по умолчанию
12:45 — настройка MS SQL для ускорения реструктуризации
13:52 — проверка созданного индекса
14:03 — настройка и использование нового механизма реструктуризации
15:46 — выполнение запросов с индексом
16:21 — особенности нового механизма реструктуризации
17:03 — несоответствие индексов и условий
22:22 — описание первого поля во всех таблицах типовых конфигураций
22:53 — итоги второго урока
23:39 — задание ко второму уроку

Чтобы это видео всегда было под рукой

Когда Вы смотрите видео на сайте, по данным просмотров мы понимаем, стоит ли что-то добавить или изменить.

Но для Вас это может быть не всегда удобно, например, если Вы захотите посмотреть видео в пути или без доступа к интернету. Чтобы у Вас была такая возможность, публикуем ссылку на занятие в формате MP4:

Больше, подробнее и понятнее на базовом курсе по ускорению и оптимизации 1С

Если Вы хотите научиться:

  • Оценивать текущее состояние системы.
  • Проводить диагностику системы и определять: проблема на стороне железа или софта.
  • Устанавливать и настраивать инструмент для анализа проблем производительности.
  • Находить, анализировать и оптимизировать долгие запросы.
  • Выявлять и устранять проблемы со взаимоблокировками и с ожиданиями на блокировках.
  • Настраивать регламентные задания на MS SQL.

…приходите на курс Ускорение и Оптимизация 1С. Базовый курс.

Комментарии / обсуждение (11):

  1. gennadycrev

    На странице Сведения нажал Тест работы (6 сек выполнялся), затем на странице Базы выбрал Анализ->Анализ запросов (получил диалог что Данные успешно проанализированы), затем на странице запросы установил фильтры, нажал обновить и……. пусто)))

    • Андрей Бурмистров

      Что бы понять что не так, пришлите скрины:
      1. Карточки эл-та из спр. Базы
      2. Карточки эл-та из спр. Серверы 1С
      3. Карточки эл-та из спр. Серверы СУБД

      Скорее всего где-то ошибка в настройке, либо не прошла 1 минута после включения настроек.

      • gennadycrev

        минута естественно прошла и не одна. Я не вижу тут возможности прикреплять скрины

      • gennadycrev

        Спасибо. Ошибку у себя нашел. Отличался путь для чтения и записи логов. Если можно еще вопрос. На странице Запросы на вкладке контекст обфусцированный код. Так должно быть или это участь бесплатной версии?

        • Андрей Бурмистров

          Так и должно быть т.к. запрос вызывался из конфигурации Монитор, а она обфусцирована.
          Для прочих исследуемых баз контекст будет отображаться нормально.

  2. Сергей

    Спасибо большое. Пойду-ка я почитаю как физически хранится составной индекс и как достигается его сбалансированность, если одно из полей «вырожденное».

  3. Максим

    Если в регистре со срезом последних есть три измерения (Измерение1, Измерение2, Измерение3) и нам надо выбрать данные по Измерение1 и Измерение3, то есть ли разница, куда запишем условия: оба условия в параметры виртуальной таблицы или условие по Измерение1 — в параметры виртуальной таблицы (т.к. попадаем в индекс), а условие по Измерение2 — в раздел «ГДЕ»?

    • Андрей Бурмистров

      Если написать условие на Измерение1 в параметрах, а Измерение3 в разделе ГДЕ, то скорее всего разницы не будет.
      Запрос отработает так же как если бы оба поля были в параметрах вирт. таблицы, будет частичный скан.
      Скажу даже больше, если вместо 3го измерения накладывать условие на 2-е, то для MS SQL разницы тоже скорее всего не будет, т.к. там довольно продвинутый оптимизатор, но лучше конечно не рисковать и придерживаться рекомендаций.

  4. Сергей

    Добрый день.
    Индекс: Склад — Характеристика- Товар.
    Характеристики НЕ используются.
    Если указать условие по всем 3 полям, как в Вашем примере, точно будет везде index seek? Смущает, то, что, если можно так выразиться применительно к составному полю, селективность поля «Характеристика» = 0.
    Похоже, в этом случае, независимо от того задали условие по характеристике или нет, оптимизатор сделает index seek по полю склад, а потом, index scan по полю Товар. По крайней мере непонятно, чем поиск нужного склада, переход на единственный узел с характеристикой (а он для каждого склад один, т.к. хар-ка всегда одна — пустая, по нашему условию) и потом поиск среди всех листьев, отличается от того же, но без перехода на пустой узел с характеристикой.

    • Андрей Бурмистров

      Сергей, приветствую!
      > Если указать условие по всем 3 полям, как в Вашем примере, точно будет везде index seek?
      Да, будет поиск по индексу.

      > непонятно, чем поиск нужного склада, переход на единственный узел с характеристикой (а он для каждого склад один, т.к. хар-ка всегда одна – пустая, по нашему условию) и потом поиск среди всех листьев, отличается от того же, но без перехода на пустой узел с характеристикой.
      Составной индекс хранится на всех уровнях дерева, т.е. все колонки составного индекса есть в каждой странице.
      Возможно вы думаете что на верхнем уровне склад, на более низком Характеристики и т.д., это не так.
      Представьте что у вас есть составной хеш из 3х полей С+Х+Т, и каждая страница содержит этот хеш.

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

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

 Ознакомлен с условиями Публичной оферты и Пользовательского соглашения
 Согласен на обработку персональных данных (Политика обработки ПДн)