Курс по Оптимизации 1С – Занятие №4

В рамках этого занятия необходимо изучить следующие материалы.

Модуль 3. Причины медленной работы

    Глава 8. Анализ причин медленной работы и оптимизация системы

    • Основные принципы оптимизации
    • Схема работы запросов в 1С
    • Основные сведения о плане запроса
    • Соответствие таблиц в СУБД объектам метаданных

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

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

  1. romhik

    Добрый День.
    Просматриваю курс из модуля 3, №8 План запроса. Пример с SQL Profiler.
    Настроил четыре основных параметра для анализа.
    Но с вашим принскрином – мой не совпадает в частности с таким параметром,
    как “SQL:BatchCompleted” у вас, а у меня результат отображения больше всего похож в “RPC:Completed”.
    С чем вызвана такая разница?
    Паузу нажимал после выполнения запроса.

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


      (текст комментария доступен только участникам Мастер-группы)

  2. se1c@yandex.ru

    Добрый день, выполнили Обновление статистики, Реиндексацию, Тестирование и исправление. После этого заметили, что bak базы средствами SQL-сервер уменьшился примерно на 10 Гб (с 32 Гб до 22 Гб). Вопрос №1: рекомендуете ли после перечисленных выше операций выполнить операцию “Сжать базу” средствами SQL-сервер? И если да, то нужно ли ставить галочку на опции “Реорганизовать файлы при освобождении неиспользуемого места…” Вопрос №2: Сколько оставлять места под журнал логов для базы? (задается в SQL-сервере)

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


      (текст комментария доступен только участникам Мастер-группы)

  3. se1c@yandex.ru

    Здравствуйте. Выполнили пересчет итогов через Тестирование и Исправление. В режиме 1С:Предприятие на форме Управление итогами данные не изменились. В “Рассчитан по ” стоит дана 28/02/2014. Пересчитались ли у нас итоги по всем периодам до настоящего времени? Еще вопрос: если включена опция “Использовать текущие итоги”, итоги по периодам вообще не используются? Если опция “Использовать текущие итоги” выключена, то текущий остаток вычисляется как сумма итогов за последний рассчитанный период + движения до текущей даты?

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


      (текст комментария доступен только участникам Мастер-группы)

      • se1c@yandex.ru

        Здравствуйте. 1.Значит, пересчет итогов из конфигуратора в моем случае выполнился с 28/02/2014 по текущее время, в соответствии с установленной границей рассчитанных итогов? 2.В УПП “Управление итогами” нужно только для установления периода рассчитанных итогов и для разделения итогов по регистрам? Если я сейчас установлю границу рассчитанных итогов по 01.08.2015, у меня выполнится пересчет итогов с 01.08.2015 по 20.10.2015 и Регистры остатков и оборотов не будут хранить информацию об итогах за более ранние периоды (01/07/2015, 01/06/2015 ит.д)?

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


          (текст комментария доступен только участникам Мастер-группы)

          • se1c@yandex.ru

            Спасибо. Удаление помеченных объектов выполнялось за 10 минут, пересчет итогов – очень долго. Выполнили Обновление статистики, Реиндексацию, Дефрагментацию.Пересчет итогов выполнился быстро – минут десять, зато Удаление помеченных объектов теперь выполняется 4 часа. С чем это может быть связано? И еще вопрос : где в УПП найти настройку Минимальный период рассчитанных итогов?

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


              (текст комментария доступен только участникам Мастер-группы)

  4. Gosha009

    Извиняюсь, если не в то занятие адресую вопрос.
    Вот тут http://v8.1c.ru/konf0613/files/13/sec_cio/09_00_83_nuraliev_s.pdf
    написано что установка минимального периода рассчитанных итогов позволяет
    сократить объем хранимых данных
    Ускоряет пересчет итогов
    Ускоряет работу неоптимальных запросов (полный скан таблицы итогов)
    Ускоряет запись движений задним числом
    Если можно прокомментируете за счет чего все это происходит или может быть наведете где об этом можно почитать?

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


      (текст комментария доступен только участникам Мастер-группы)

  5. oberon2000

    Вопрос по профайлеру – если им пользоваться в рабочей базе с десятками пользователей то найти проверяемый запрос очень затруднительно. Как вы решаете этот вопрос в реально работающих базах? Или для анализа нужно разворачиваете отдельный сервер с копией базы? И влияет ли на составление плана запроса загруженность СУБД(т.е. могут ли быть различные планы на один и тот же запрос при разных нагрузках)?

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


      (текст комментария доступен только участникам Мастер-группы)

  6. Dmitry K

    День добрый.
    Вы можете выложить рабочую консоль запросов с выводом плана запроса? В консоли из конфигурации плана запросов нет. Консоль с сайта 1с в вашей конфигурации не работает. Выдает ошибку:

    Ошибка инициализации модуля: Форма.Форма.Форма
    по причине:
    {Форма.Форма.Форма(34,2)}: Переменная не определена (ЭтотОбъект)
        <<?>>ЭтотОбъект.Заголовок    = ЗаголовокФормы;
    {Форма.Форма.Форма(1050,90)}: Переменная не определена (ЭтотОбъект)
            ТекущийЗапрос.АдресРезультатовЗапроса = ПоместитьВоВременноеХранилище(Результат, <<?>>ЭтотОбъект.УникальныйИдентификатор);

    При проверке модуля, подобных ошибок ещё с два десятка.

    p.s. Вам стоило сделать какую-то вменяемую инструкцию по перечню и версиям ПО используемых при прохождении курса. И как их лучше ставить. Чтобы перед прохождением курса можно было сразу настроить всю “песочницу” и потом на это не отвлекаться. Т.е., как минимум, сразу поставить mssql и 1с нужных версий. Приходится проходить через все грабли и терять кучу времени на это.
    Поставил сервер 8.2 и MS Sql на разных машинах – пришлось переставлять на одну. Теперь обновил сервер 8.2 на 8.3, чтобы заработала консоль с планом запросов. Так и она не заработала.

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


      (текст комментария доступен только участникам Мастер-группы)

      • Dmitry K

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

  7. yamarsel

    Пересчет итогов по сути – это просто удаление нулевых строк в таблицах итогов?
    Выполняются ли ещё какие-то действия при этом?

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


      (текст комментария доступен только участникам Мастер-группы)

      • yamarsel

        После включения разделения итогов для регистра, в процессе обновления информационной базы в строке состояния отразилось – “Пересчет итогов регистра..”.

        А почему они вдруг начали пересчитываться, что-то не совсем ясно…

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


          (текст комментария доступен только участникам Мастер-группы)

  8. sahsa

    Делаю запрос к справочнику «Номенклатура» и выбираю поле «НаправлениеДеятельности»,
    оптимизатор выдает вложеный цикл причем предполагаемое количество строк 1 а фактическое 70!
    в справочнике НаправленияДеятельности 4 элемента всего.
    Какие причины такого поведения оптимизатора?

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


      (текст комментария доступен только участникам Мастер-группы)

      • sahsa

        запрос возвращает 81 строку.
        Все верно с выводом, это я понимаю, так как в ведомой таблице 81 строка. а почему он в предполагаемое количество строк ставит 1 ,не 4 как записано статистике?

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


          (текст комментария доступен только участникам Мастер-группы)

  9. sahsa

    При попытке просмотреть план запроса в консоли запросов 8.3 выдает ошибку.
    Релиз платформы 8.3.6.2014

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


      (текст комментария доступен только участникам Мастер-группы)

  10. gvk

    Здравствуйте!
    Запускаю обработку Консоль Запросов 8.3. При попытке открыть План запроса выдает ошибку “Неправильный путь файла”. Анализирую ожидаемое имя файла и фактическое – они разные.

    Ожидаемое: “15051905.log”
    Фактическое: “15051914.log” и “15051915.log”

    В результате лог-файл программа не находит.
    В чем дело?

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


      (текст комментария доступен только участникам Мастер-группы)

  11. Владимир

    Почему может быть, что у меня при чтении графического плана запроса отображаются другие показатели. Т.е. нет Количество предполагаемого и фактического выполнения?

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


      (текст комментария доступен только участникам Мастер-группы)

  12. imagik

    Возник такой вопрос. Функция ПолучитьСтруктуруХраненияБазыДанных() не показывает общие метаданные? Подсистемы, критерии отбора? как узнать, как они называются в СУБД ?

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


      (текст комментария доступен только участникам Мастер-группы)

  13. Roza Aleksey

    Добрый день! Скажите: имею данные по нулевым строкам (скриншот). Что скажите по цифрам? Получается, что пересчет итогов вообще никогда не выполнялся!? (скриншот на экран полностью не уместился) И еще, возможно пересчитать итоги средствами самой SQL, не задействуя сам 1С? Можете показать примерный скрипт или есть соответствующие инструменты? Спасибо!

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


      (текст комментария доступен только участникам Мастер-группы)

  14. Roza Aleksey

    Добрый день! Вопрос по Profiler’у, настроил трассировку, получаю планы запросов, все отрабатывает. Файл трассировки сохранил. Открываю заново Profiler, пытаюсь открыть сохраненную трассировку и подучаю ошибку:”Невозможно воспроизвести текущую трассировку из-за отсутствия некоторых событий ..” (приложил скриншот). Скажите, что не так сделал? Еще вчера трассировка работала. Конечно, я создал свой шаблон и пока запускаю из него новые трассировки, но хочется узнать, где ошибся. Спасибо!

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


      (текст комментария доступен только участникам Мастер-группы)

      • Roza Aleksey

        Добрый день! Открываю двойным щелчком, все равно, трассировка не запускается. Может тут есть еще какие-нибудь настройки? Спасибо!

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


          (текст комментария доступен только участникам Мастер-группы)

  15. zels

    Вопрос по ссылкам и представлениям. Если я пишу в консоли запрос типа “Выбрать ссылка из Справочник.Номенклатура”, то в окне вижу наименование. По плану запроса видно, что наименование не выбирается. Кто, когда и как подменяет ссылку наименованием? Если это делает сервер 1С предприятия, то может случиться так, что он возьмет наименование из кэша, без обращения к базе? У меня был отчет, который работал быстрее, если в запросе бралась только ссылка, без наименования (хотя 1С рекомендует наоборот). Правда, это было давно (на 8.1 или 8.0, точно не помню).

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


      (текст комментария доступен только участникам Мастер-группы)

  16. zels

    Правильно я понимаю, что для пакетных запросов 1С генерирует последовательно несколько SQL-запросов, а затем оптимизатор разбирается с каждым отдельно?

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


      (текст комментария доступен только участникам Мастер-группы)

  17. Andrefan

    Добрый день! Есть ли способ в Profiler-е наложить отборы на определенный запрос? У меня есть отчет, который выполняется 20 минут, и даже если я установил рекомендуемые Вами фильтры, в трассировке получается очень много данных. Посоветуйте, пожалуйста, как лучше сделать подобный отбор, чтобы не “отсечь” нужные данные (графический план, текстовый, сам текст запроса)?

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


      (текст комментария доступен только участникам Мастер-группы)

    • GilevSlava

      попробуйте увеличить значение в колонке Duration

  18. Rico_1C

    Добрый вечер !
    Про просмотре 8-го урока по Планам запросов, в видеоуроке при выполнении простейшего запроса в Profiler создался запрос:
    SELECT
    T1._Description
    FROM dbo._Reference95 T1 WITH(NOLOCK)

    У меня создается:
    SELECT
    T1._Description
    FROM dbo._Reference95 T1

    т.е. не – без блокировки данных WITH(NOLOCK)

    У меня я так понимаю, данные блокируются на время чтения или нет?
    И с чем это может быть связано?

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


      (текст комментария доступен только участникам Мастер-группы)

  19. nike

    Андрей, добрый день!
    Вчера столкнулся с ситуацией, которая имеет косвенное отношение к теме курса и относится скорее к первому занятию, но обсуждение там уже закрыто. Если можно – ответьте на мой вопрос здесь, пожалуйста.

    У клиента внезапно возникли проблемы с загрузкой операционной системы после рестарта сервера. По словам клиента, при входе в ОС после ввода пользователя и пароля система повисает. Естественно они обратились с проблемой к администратору, он провел какие-то настройки и все заработало.

    Стал смотреть, что именно он сделал и обнаружил, что в свойствах MS SQL на закладке Processors он установил флажок Automatically Set I/O affinity mask for all processors и снял флажок с CPU0 (всего их 8) в ветке процессоров ALL-NumaNode0. Я его спросил “Зачем?”, он ответил, что такая настройка освобождает первый процессор от MS SQL, который может по полной нагружать процессоры, даже во время старта ОС, что и привело к зависанию ОС после рестарта. Насколько, по Вашему мнению это справедливо? И правильно ли “отбирать” у MS SQL один из процессоров?

    P.s. На сервере установлена ОС Win 2008 R2 64-bit, ОЗУ 16 Gb, MS SQL 2008 R2 Standard 64-bit, сервер 1С, тоже 64битный 8.3.5.1098 и платформа 1С. Больше ничего на нем нет. Для MS SQL настроен предел превышения памяти и выполнены прочие общие настройки, которые Вы советовали в видео-уроках. Никаких экзотических настроек не делалось.

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


      (текст комментария доступен только участникам Мастер-группы)

  20. Alexey1983

    Андрей, добрый день
    В примере с Clustered Index Scan сказано, что данный оператор используется при обращении к таблице, содержащей кластерный индекс. Но при просмотре видео видно, что данный оператор был применен только к таблице 8 (Виды товаров), в то время как к таблице 7 (Товары) был применен оператор Index Scan. Если по отдельности выполнить запросы вида “Выбрать ссылка из Справочник.[Товары или ВидыТоваров]”, то будет использоваться также оператор Index Scan. Почему?

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


      (текст комментария доступен только участникам Мастер-группы)

  21. Alexey1983

    Здравствуйте. В примере с nested loops делается упор на том, что, указав в запросе инструкцию “первые”, мы гарантируем маленькие таблицы и соединение в цикле. Но ведь инструкция “первые” относится к результату соединения, она не означает выбор первых N строк из каждой таблицы и только после этого команду соединения. Например в каждой таблице по милиону записей, а в результате соединения получается сто строк, из которых нужно отобрать первые 10. Почему в примере план запроса вначале отбирает записи из каждой таблицы и только потом соединяет?

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


      (текст комментария доступен только участникам Мастер-группы)

      • Alexey1983

        Не обратил внимание, что таблица одна и та же. Тогда все понятно. Спасибо!

        • imagik

          Т.е. система сначала определяет, что таблица одна и та же и из-за этого решает сразу выбрать 5 строк? а если бы были две разные таблицы, то Nested Loops не было бы?

          и еще вопрос: что такое hint (хинт) ?

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


            (текст комментария доступен только участникам Мастер-группы)

  22. merenkovaav

    Здравствуйте!
    Возник такой вопрос: вы рассказываете, что если система медленно работает только под определенным пользователем, то возможно, это проблема с правами доступа. Непонятно, каким образом права доступа могут влиять на скорость работы. По идее, если прав недостаточно, то работать “не получится совсем”, а не “получится, но медленно”. Или тут имеется ввиду не отсутствие прав, а что-то другое?

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


      (текст комментария доступен только участникам Мастер-группы)

  23. lexbond

    В нашем холдинге еще используется несколько 1С 7.7 баз. Размером до 250ГБ. Есть проблемы производительности.
    1. Есть ли какое-то средство, кроме профайлера (или дополнительно к нему), которым можно в удобном виде собрать информацию по длинным запросам и СГРУППИРОВАТЬ ее по видам запросов, как это делает сервис Гилева?
    2. С помощью тех инструментов, которые мы рассматриваем, я так понимаю, можно будет собрать информацию с СУБД о блокировках и взаимоблокировках. Все остальное идет из ТЖ 1С 8.2. Верно?

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


      (текст комментария доступен только участникам Мастер-группы)

    • GilevSlava

      для 7.7 прежде всего есть смысл попытаться перенести в архивную базу данные, которые не используются каждый день в оперативной работе
      уменьшение базы в 10 раз даст заметный на глаз прирост скорости

    • Роман Мартыненко

      В 7.7 можно парсить ошибки в журнале регистрации:
      если содержит [HYT00] – это превышение ожидания блокировки, у взаимоблокировки код не помню, но можно, наверно, прямо по слову “deadlock” проверять.

  24. dunaev.anton

    День добрый , вопрос по разделу 9.1 курса , по обработке ИнструментыРазработчикаКонсольЗапросов83 . Заработало все хорошо. Ну вот план первого самого простого запроса – отличается кардинально от Вашего . (nested loops к примеру) . в чем причина ?
    База Ваша , индекс по полю цена – присутствует.

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


      (текст комментария доступен только участникам Мастер-группы)

        • dunaev.anton

          Хотя уже сомневаюсь что дело в доп.упорядочивании .(посмотрите на скрине в плане 1) дальше Вы как раз приводите пример со справочником элементы , и появляется nested loops из-за “старой” статистики. Возник сразу вопрос – а что считается “старой” статистикой , когда после последнего её обновления – были любые изменения данной таблицы , и еще галка в свойствах базы на sql – auto update statistics , она по сути заменяет регл .задания по обнов.стат ? и еще – а что такое auto update statistics asynchronously . спасибо

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


            (текст комментария доступен только участникам Мастер-группы)

  25. one more

    Здравствуйте

    Подскажите пожалуйста, какой смысл отключать итоги при массовом проведении документов, если в проведении этих документов повсеместно используются виртуальные таблицы?
    УПП.

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


      (текст комментария доступен только участникам Мастер-группы)

      • IvanSkrobot

        Если итоги выключены, то виртуальные таблицы просто не будут работать.

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


          (текст комментария доступен только участникам Мастер-группы)

  26. vpapulov

    Здравствуйте!
    Всегда думал, что запрос TOP N влияет только на выходное количество строк. Но по плану запроса изменяя ПЕРВЫЕ N от 5 до 500 мы видим изменения количества строк при сканировании индекса.
    Данное поведение гарантировано или зависит от догадливости оптимизатора?

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


      (текст комментария доступен только участникам Мастер-группы)

  27. Lidiya_Sh

    Андрей,
    использую базу БазаДляКурсаПоУскорению1С
    но в ней не запускается обработка с ИТС ИнструментыРазработчикаКонсольЗапросов83
    Ошибка
    {Форма.Форма.Форма(34,2)}: Переменная не определена (ЭтотОбъект)
    <>ЭтотОбъект.Заголовок = ЗаголовокФормы;
    {Форма.Форма.Форма(1050,90)}: Переменная не определена (ЭтотОбъект)
    ТекущийЗапрос.АдресРезультатовЗапроса = ПоместитьВоВременноеХранилище(Результат, <>ЭтотОбъект.УникальныйИдентификатор);

    Возможно в базу нужно вставить функционал из БСП?

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


      (текст комментария доступен только участникам Мастер-группы)

      • Lidiya_Sh

        какую обработку тогда использовать?

        Обработка для тонкого клиента также открывается с ошибками
        {Форма.Форма.Форма(2,2)}: Ожидается оператор препроцессора
        #Область ОбработчикиСобытийФормы
        {Форма.Форма.Форма(1587,2)}: Ожидается оператор препроцессора
        #КонецОбласти

        Андрей, может просто выложите свои обработки?

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


          (текст комментария доступен только участникам Мастер-группы)

  28. Sm86hk

    Незначительная неточность в слайде. Пиктограммы на слайде индексов и кластеризованных индексов отображены как одинаковые, на самом деле это не так (в материалах это тоже не так).

    p.s. Есть вопрос на тему сдачу экзамена “Эксперт по технологическим вопросам”. Не удалось найти информации о том, для каких целей необходим этот сертификат. Что он дает, если не брать в расчет “я молодец”, скажем работодателю-франчайзи?

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


      (текст комментария доступен только участникам Мастер-группы)

    • GilevSlava

      возможно сейчас ситуация поменялась, раньше точно было что

      влияет на цену при продаже упп на большое количество пользователей, при отсутствии у франча таких сертификатов цена дороже )

      для конечного заказчика цена не зависит от сертификата

  29. delici

    Здравствуйте. У меня вопрос по различию событий Show plan Statistic Profile и Show plan profile. Когда мы на экзамене Эксперта разбирали причину ошибки в запросе, мы использовали Show plan profile. На вопрос, почему не Show plan Statistic Profile экзаменаторы ответили, что это планируемый план выполнения запроса, и не факт, что потом запрос выполнится по этому плану. Можете пояснить этот вопрос? В итоге, каким событием лучше пользоваться?

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


      (текст комментария доступен только участникам Мастер-группы)

      • bas

        В “Настольной книге эксперта” на стр. 87 приводится описание полей в всплывающей подсказке оператора плана запроса, в т.ч. там описываются поля “Предполагаемое количество строк” и “Фактическое количество строк”. Далее идет сноска, в которой говорится, что если мы смотрим “реальный (действительный)” план запроса, то ожидаемое кол. строк = фактическое кол. строк. А чтобы узнать сколько строк действительно ожидалось, необходимо смотреть “ожидаемый план, например, через событие Showplan XML”.
        В связи с вышеизложенным возникает ряд вопросов.
        1. Что такое ожидаемый план запроса и действительный (реальный) план запроса?
        2. Утверждение насчет “ожидаемое кол. строк”=”фактическое кол. строк” для операторов фактического плана – это ошибка?
        3. Я правильно понимаю, что событие Showplan XML – это всего лишь “урезанная версия” события Showplan XML Statistics Profile, в которой есть только информация о предполагаемых параметрах, но нет информации о фактических параметрах выполнения запроса?

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


          (текст комментария доступен только участникам Мастер-группы)

          • Севостьянов Андрей

            Андрей, можно подробнее пояснить (или дать ссылку на источник) как/в какой момент/зачем оптимизатор получае предполагаемый план запроса, а использовать по факту может другой план запроса – фактический?

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


              (текст комментария доступен только участникам Мастер-группы)

  30. hekpoh

    Здравствуйте, Андрей!
    В ролике “План запроса. Соответствие таблиц в СУБД объектам метаданных”, мне кажется, у Вас есть неточность. Вы говорите, что “…Функция ПолучитьСтруктуруХраненияБазыДанных() не показывает некоторые данные, такие как, кластерные индексы, используемые платформой…”
    Это не совсем так. Все дело во втором параметре функции. Если его установить в “Истина” (как это сделано в обработке к этому курсу “СтруктураХраненияМетаданныхУФ.epf”), то кластерный индекс виден на стороне 1С.
    Или это не он? Имена-то различаются…

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


      (текст комментария доступен только участникам Мастер-группы)

Комментарии закрыты