Пример неоптимальности в типовой конфигурации – как найти и исправить



Исправлять проблемы приходится не только в “самописных” или молодых конфигурациях.

Даже массовые конфигурации, выпущенные бог знает сколько лет назад, иногда требуют оптимизации

Наверняка все слышали тезис “Управление Торговлей 10 – почти идеальное решение, там за несколько лет уже все давно вылизано и исправлено”.

Да, решение неплохое, но и в нем есть места, где нужно внимательно присмотреться :)

В сегодняшних видео мы найдем в УТ 10.3 “подозрительный” запрос, проанализируем, что с ним – и аккуратно исправим, с прицелом на будущее.

Кому будет полезна эта серия видео:

  • Если Вы внедряете самописные решения – покажем пример оптимизации объемного запроса
  • Если Вы внедряете типовые – покажем, как аккуратно вносить изменения.

Видео 1: Как найти неоптимальные запросы

В этом видео мы покажем, как провести анализ подозрительного запроса в типовой УТ.

С помощью SQL Profiler мы получаем план такого запроса и проводим его анализ – в результате находим несколько проблем.

Видео 2: Оптимизация запроса из типовой УТ – решение проблемы сканирования таблицы

В видео показываем пример оптимизации запроса в типовой конфигурации. Обычно это довольно большой запрос, и нужно уметь внести в него точечные изменения.

В результате оптимизации избавляемся от одной проблемы, но в плане запроса появляются другие неоптимальные операции. Их мы решим в следующем видео.

Видео 3: Получение реквизита поля составного типа – причина неоптимального запроса

В рассматриваемом запросе типовой УТ встречается обращение к реквизиту через две точки – штатный функционал запросов “Разымененование полей”.

Разыменование полей составного типа – частая причина медленных запросов. В этом уроке мы показываем, как победить эту проблему.

Видео 4: Как избежать проблем при обновлении конфигурации

При внесении изменений в типовые нужно учитывать, что в будущем они могут обновляться.

В этом видео мы даем несколько советов по модификации типовых конфигураций.

P.S.

Разумеется такая ситуация может произойти и с “доработанной” конфигурацией, что даже более вероятно, ведь редко кто проводит нагрузочное тестирование перед сдачей работ.

Мы же, как всегда, призываем быть бдительными и аккуратными :))

Эта тема детально раскрыта в курсе:

«Ускорение и оптимизация систем на 1С:Предприятие 8.3»

Поддержка – до 4 месяцев. Объем курса – до 35 учебных часов.

Описание курса

Не откладывайте свое обучение!

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

  1. Дмитрий

    “Видео 1: Как найти неоптимальные запросы”
    Не соответствует названию. Это скорее “КАК определить “а не неоптимальный ли вот этот текущий запрос, находящийся у меня под курсором в не файловой базе””… )))

    Вопрос: Почему в 3м видео нет ничего о том, что оптимизация 2 оказалась по производительности хуже чем оптимизация 1? 43 против 40 мс, и 879 чтений против 1074. Есть подозрения, что у автора база была не солидная боевая, а пробная с малым набором данных.
    Спасибо.

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

      > Почему в 3м видео нет ничего о том, что оптимизация 2 оказалась по производительности хуже чем оптимизация 1? 43 против 40 мс, и 879 чтений против 1074. Есть подозрения, что у автора база была не солидная боевая, а пробная с малым набором данных.

      Так все это видео и посвящено тому, что первая оптимизация ускорила запрос по времени но пострадала бы параллельность работы. Изменив запрос мы на доли секунды его замедлили но зато параллельность не пострадала.
      При записи использовалась Demo база УТ, об этом легко догадаться глядя на маленькое время запросов. В большой базе конечно и времена были бы другими и разница после оптимизации была бы существеннее.

  2. Andrefan

    Добрый день. Проходил курс с первым потоком, но не припомню, чтобы был такой видеоурок. Материал обновляется? Где можно мониторить информацию об обновлениях? (и этого курса, и других)

    • Юлия Толстых

      Добрый день! Да, курс был дополнен новыми видеоуроками. Они доступны для скачивания на странице с материалами курса (см. Бонусные материалы). Стандартно все обновления/бонусы публикуются на тех же страницах, что и основные материалы курсов, при этом обязательно указывается дата публикации.

    • Евгений Гилев (Мастер-тренер)

      Спасибо, проведем эксперименты с компрессией видеопотока.

  3. SomeOne

    Поделюсь:
    В КА 1.1 так же вынес в виртуальную таблицу запрос к списанным товарам.
    В копии базы (на том же сервере 1С, но на другом SQL) ускорение было более чем в 10 раз (база довольно большая).
    Перенес настройку в рабочую базу и документ стал проводиться 10 минут!:)
    Добавил индексы в вирт. таблицу, и начало проводиться нормально.

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

      Это обычная ситуация, ведь с оптимизацией как и с остальным все индивидуально. В одних условиях переписанный запрос может дать серьезное ускорение, в других разницы вообще не будет или будет замедление.
      Именно поэтому я говорю что все нужно проверять на практике именно в ваших условиях и не нужно делать оптимизацию ради самой оптимизации, нужно оптимизировать что бы устранить какую-то проблему.
      Кстати если вам помогло создание индексов на временной таблицы, то вероятно это была очень большая временная таблица. В моем примере в таблице было всего несколько строк и не было смысла делать индекс.

      • SomeOne

        В том то и дело что нет, не большая, в среднем в документах 10-20 строк.

        В копии на этих же документах не было проблем.

        Я согласен, что каждый случай индивидуален, только напрягает, что 1С такая не постоянная. Так, крик души:)

  4. Сураев Игорь

    Подскажите, а вот если в месте, где вы переделывали обращение через точку, использовать конструкцию типа:
    Выбор
    Когда ПартииТоваровНаСкладах.ДокументОприходования Ссылка
    Документ.ВозвратТоваровОтПокупателя Тогда
    Выразить(ПартииТоваровНаСкладах.ДокументОприходования как Документ.ВозвратТоваровОтПокупателя).Дата

    Когда ПартииТоваровНаСкладах.ДокументОприходования Ссылка
    Документ.РеализацияТоваровУслуг Тогда
    Выразить(ПартииТоваровНаСкладах.ДокументОприходования как Документ.РеализацияТоваровУслуг).Дата
    Конец
    это будет медленнее, чем предложенный вариант?

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

      Попробовал ваш вариант. План получается такой же как и после первой оптимизации, т.к. и запрос по сути такой же. В моей базе запрос с ВЫРАЗИТЬ по времени и логическим чтениям действительно будет быстрее (как и после первой оптимизации), но при этом будут сканироваться таблицы документов которые входят в состав составного типа.
      Для маленькой базы которая работает на 8.3 с включенным версионированием RCSI это не проблема, но в других случаях это может привести к проблемам с блокировками. А если база постоянно растет то и нагрузка на диск из-за сканирования тоже будет постоянно возрастать.

  5. Филимонов Иван

    Большое спасибо за данное видео – это то чего не хватало в курсах по оптимизации (разбор типовой БД)

    • Евгений Гилев (Мастер-тренер)

      Планируем по мере накопления практических кейсов пополнять такими разборами курс по оптимизации.

    • Юлия Толстых

      Добрый день, Андрей!
      Проверка не выявила никаких ошибок при просмотре. Попробуйте перезагрузить страницу или открыть ее в другом браузере.

      • Андрей Наконечный

        Здравствуйте, Юлия!
        Спасибо за звонок. Отвечаю на Ваш вопрос. К сожалению перезагрузка компьютера сейчас невозможна. Попробовал на 3-х браузерах. Chrome не запускает видео, доходит до 2-й секунды и останавливается бегунок, кэширование видео при этом проходит дальше. Edge видео не показывает в принципе – видны только надписи “Просмотр видео” при клике на них происходит переход в самый верх страницы, “квадраты” где должны быть видео не кликабельны. Под IE заработало нормально. OS – Win 10 x64 для 1-го языка.
        В принципе моя проблема решилась, спасибо.

        • Юлия Толстых

          Доброго дня, Андрей.
          Рада, что проблему удалось решить. Нам ошибку воспроизвести так и не удалось – на компьютере с аналогичной ОС во всех перечисленных браузерах видео запустилось корректно. Видимо, все-таки ошибка локальная, причину нужно искать именно на Вашем компьютере.

  6. ivanovav1983

    За чей счет проводятся работы по оптимизации и исправлению грубых ошибок в типовых конфигурациях? Заказчик не намерен оплачивать, говорит: “У меня программа лицензионная и я вам целый ИТС проф оплачиваю, вон какие огромные деньги!”

    • Евгений Гилев (Мастер-тренер)

      Это вопрос в большей степени политический, зависит в том числе от отношений с заказчиком.

      Можно предложить на выбор варианты:
      1. Описываем проблему в поддержку 1С далее ждем результатов и исправительного релиза
      2. Исправляем сами, но это наша работа – соответственно за деньги.

    • Tyushin

      в любом случае, всё всегда оплачивает клиент. То, что написал Евгений, – имхо это иллюзия, техподдержка будет очень долго думать (очень-преочень долго).

      • Евгений Гилев (Мастер-тренер)

        Да, такую поддержку предлагает 1С по линии ИТС.
        Если проблема “горит” – это платное решение силами внедренцев.

  7. Tyushin

    мне кажется, или это очень сомнительная идея “оптимизировать” типовые запросы, снимать конфу с полной поддержки и всё такое?

    • Евгений Гилев (Мастер-тренер)

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

      Кстати, по итогам работ иногда выходит свежий релиз типовой с соответствующей оптимизацией (естественно с определенной временной задержкой).

      Нам бы тоже хотелось, чтобы в типовых не было ошибок и они были бы на 100% оптимальны, но пока это не так.

      Кстати, конфигурацию с поддержки как раз не рекомендуем снимать – нужно вносить точечные правки в нужный модуль. У грамотного специалиста не будет проблем с обновлением :)

    • Крынецкий Александр

      Не нужно снимать с поддержки – надо включать возможность внесения изменений.
      Не так давно выполнял работы по оптимизации расчет себестоимости в УПП – можно оптимизировать… раза в 2-5.

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

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

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.