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

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

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

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

    • Анализ неоптимальных запросов с помощью сервисов, 1С:ЦУП, SQL Profiler, технологического журнала
    • Пример анализа плана запроса
    • Задача на поиск неоптимального запроса

Практические задания

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

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

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

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

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

  1. akcent87

    Добрый день! Я столкнулся со следующей ситуацией: выбираю данные из виртуальной таблицы РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто, накладывая различные фильтры в её параметры и каждый раз смотрю как меняется план. При этом я свой запрос вижу в следующем виде:
    exec sp_executesql N’SELECT TOP 500
    T1.ValueDt1_TYPE,
    T1.ValueDt1_RTRef,
    T1.ValueDt1_RRRef,
    T1.ValueDt2_TYPE,
    T1.ValueDt2_RTRef,
    T1.ValueDt2_RRRef,
    T3._Fld2416RRef,
    ……………
    FROM #tt67 T2 WITH(NOLOCK)) T1
    LEFT OUTER JOIN _Reference128 T3 WITH(NOLOCK)
    ON T1.ValueCt1_TYPE = 0x08 AND T1.ValueCt1_RTRef = @P1 AND T1.ValueCt1_RRRef = T3._IDRRef’,N’@P1 varbinary(4)’,0x00000080

    В этом запросе идет обращение к временной таблице #tt67, но я не совсем понимаю как в трассировке найти место в котором формируется эта вт. Делаю поиск(Ctrl+F) по #tt67 и мне находится 8 мест в трассировке где присутствует запрос INSERT INTO #tt67. Как понять в каком именно месте формируется эта временная таблица?

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

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

  2. Светлана

    Добрый вечер. С помощью замера производительности были выявлены критичные запросы. Запросы исправлены и в топ не попадают. Теперь в топ выходят такие конструкции как «Таб.НайтиСтроки(…)», «Если НЕ (Эл.Значение[Элемент.Ключ] = Строка[Элемент.Ключ+Префикс]) Тогда», «Для Каждого Из Цикл». Время работы остается не приемлемым. В курсе будут рассматриваться методы решения таких проблем? Если нет, подскажите, пожалуйста, в каком направлении работать?

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

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

      • Светлана

        Все рекомендованные в курсе счетчики в норме. Тест проверки дисков на скорость запущу, спасибо. Я думаю, что дело в количестве выполнений этих операторов.
        Оператор Кол. Время (сек.)
        Таб.НайтиСтроки(…) | 35 262 | 3 331
        Если НЕ (Эл.Значение[Элемент.Ключ] =
        Строка[Элемент.Ключ+Префикс]) Тогда | 25 692 702 | 236
        Для Каждого Из Цикл | 25 693 408 | 187

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

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

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

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

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

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

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

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

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

                • Светлана

                  Да это УПП. Документ «Корректировка стоимости списанных товаров». Документ без оптимизации выполняется 6-7 часов. После оптимизации 3-4 часа, но это все равно много. Для корректировки подается около 4500 строк номенклатуры, складов больше сотни. Программа строит деревья, рассчитывает пути и в итоге получаются такие огромные показатели (35 262 раз). Попробую воспользоваться вашими советами, спасибо.

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

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

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

        • EdwardTalko

          Нужно добавить индекс в таблицу значений с ключом как у структуры, передаваемой в НайтиСтроки.

          Таб.Индексы.Добавить(«ЗдесьКлючИзСтруктуры»)

        • Ekovichev

          1. Если структура поиска по 1 полю, то выгрузить значения таблицы в соответствие, где ключ = искомое значение, а значение — строка таблицы. Поиск по соответствию идет в разы быстрее поиска по таблице. Если поиск по нескольким колонкам, тогда проиндексировать колонки в таблице.
          2. Попробуйте избавиться от цикла, если никак, то функцию цикла разместите в 1 строку. Это нечитабельно при больших кусках кода, но оптимально.
          Например Для Каждого Элемент ИЗ Массив Цикл ….. КонецЦикла;//Все в 1 строку
          Об этом примере можно почитать на инфостарте, название статьи не помню.
          3. Возможно таблица, в которой идет поиск слишком большая и можно ее сократить или для разных входных данных искать в разных таблицах.
          4. Если операции с большим весом находятся в цикле, попробовать их достать оттуда и закэшировать (поместить во временные таблицы).

  3. gerasimovv

    Смотрю графическое представление планов запросов. Для простых запросов все отображается как в видеокурсе (несколько связанных операторов). А для большого сложного запроса profiler показал один оператор (см. картинку). Почему так? Как посмотреть полный план запроса?

    %D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81.png%D0%9F%D0%BB%D0%B0%D0%BD.png

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

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

      • gerasimovv

        При создании трассировки есть флаг «Сохранить в файл». Его нужно установить? Я его установил, указал файл trc. При открытии этого файла вижу ту же картину — графического плана нет, событие «Trace Skipped Records» есть. Как мне посмотреть графический план ? Спасибо.

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

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

  4. annamv

    Здравствуйте!
    В начале апреля я обращалась к Вам с вопросом через Вашу службу поддержки, но на тот момент
    я не принимала участие в мастер группе. Вы ответите мне на мой вопрос в текущем потоке?
    Вопрос во вложении.

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

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

  5. magrib

    Добрый день!
    1. Увидел, что в 14 задании в плане запроса временная таблица «ТаблицаНоменклатуры» называется #tt15 а в файле с запросом sql #tt2398. Это опечатка?
    2. Я так понимаю, что в сервисе Гилева «Анализ длительных запросов» — нет возможности посмотреть в плане запроса такие данные, как Список столбцов(Defined Values в профайлере). Или как-то можно? Просто хотелось бы понимать лучше логику оптимизатора при построении запроса, а без выходных данных полной картины нет.

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

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

  6. Николай Гунин

    Практическое задание 14.
    В описании задачи сказано, о времени выполнения запроса порядка 300 секунд. Какое получилось время выполнения запроса после проведенной оптимизации?

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

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

      • Николай Гунин

        Оптимизация:
        1. В одном видео используется класс событий SQL:StmtCompleted, в другом SQL:BatchCompleted. С чем это связано и какие должны быть выбраны события?
        2. Есть ли влияние размера таблицы на стоимость запроса?
        3. В задании 14 в запросе объединены два запроса. Если я правильно все рассчитал, то стоимость у них примерно одинакова, но размер таблиц отличается на 2 порядка. С чем это связано?
        4. В некоторых планах SQL встречается «?». Как его надо интерпретировать?

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

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

          • Николай Гунин

            Извините, ошибся. Речь про запрос SQL. В том же 14 задании есть текст запроса.

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

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

          • Николай Гунин

            2 Влияние есть, если выбран план со сканом таблицы в 5 строк это одна стоимость, если скан 50 млн. строк это другая стоимость.

            Я все про 14 задание. Одна таблица на 160 736 107 другая 1 156 041 — разница в количестве строк в 2 порядка. А стоимость почти одинаковая: 0.0362 и 0.0308 попугая соответственно.
            Были ли проблемы с производительностью оборудования?

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

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

          • Николай Гунин

            1. Выбирать нужно событие SQL:BatchCompleted
            Про это надо бы вынести в «лучшие вопросы». Пролистал тему и вижу что не я один это заметил.

      • Николай Гунин

        >>Честно говоря уже не помню, но то что меньше минуты это точно.
        Как выглядит конечный вариант?

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

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

          • Николай Гунин

            Жаль. Интересно посмотреть на оптимизированный план выполнения запроса.

  7. wonrims

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

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

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

  8. Shcheglov

    Добрый день! Вопрос не совсем по теме, но касается её. В одном из заданий встречается соединение с табличной частью документа, выбранной по ссылке из таблиц БД. Я привык делать это созданием временной таблицы выборкой из табличной части ДокументаОбъекта. Задумался: а как быстрее? Куда вообще обращается платформа за данными из ТЧ в этом случае? Читает из базы или ТЧ объекта существует в виде маленькой временной таблицы?

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

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

  9. Gostmair

    В видео уроке «79 Анализ неоптимальных запросов» при включении анализа запросов в ЦУП вы несколько раз говорить, что будет серьезная нагрузка на систему при включении анализа, поэтому его нужно выполнять короткое время и прочее. А вот при включенном анализе запросов сервисом Гилева таких слов не звучит. В чем принципиальное различие механизмов если один очень грузит систему, а другой нет? Оба же ТЖ анализируют.

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

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

  10. Kamas

    Вопрос правильно ли считать ошибкой что поиск по индексу выполняется несколько раз в большой таблице если оптимизатор знает, что поиск выполнится несколько раз. То есть у нас есть оператор Nested Loops, с одной стороны которого из таблицы возвращается штук 70 строк, а с другой таблица которую он будет опрашивать на поиск по индексу 70 раз, но в ней 100 миллионов строк. Притом, оптимизатор не ошибся и знает что из первой таблицы вернется 70 строк (Количество ожидаемых=количеству возвращены) и количество выполнений Index Seek во второй таблице 70 раз (Количество ожидаемых=Количеству выполненых).То есть построитель не ошибся, а намеренно выбрал этот план хотя он и кажется не оптимальным.

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

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

  11. ShulgOlya

    При рассмотрении оператора Nested Loops в качестве примера используется запрос:

    «ВЫБРАТЬ ПЕРВЫЕ 5
    РС_Тест2.Число1,
    РС_Тест21.Число1 КАК Число11
    ИЗ
    РегистрСведений.РС_Тест2 КАК РС_Тест2
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РС_Тест2 КАК РС_Тест21
    ПО
    РС_Тест2.Число1 = РС_Тест21.Число1
    И РС_Тест2.Число2 = РС_Тест21.Число2
    И РС_Тест2.Число3 = РС_Тест21.Число3»

    Анализируем план запрос, и говорится, что так как используются маленькие наборы данных (по 5 строк выбирается), то оптимален оператор Nested Loops.

    При рассмотрении неоптимального использования Nested Loops используется запрос:

    «ВЫБРАТЬ ПЕРВЫЕ 5
    РС_Тест2.Число1,
    РС_Тест21.Число1 КАК Число11
    ИЗ
    РегистрСведений.РС_Тест2 КАК РС_Тест2
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РС_Тест2 КАК РС_Тест21
    ПО
    РС_Тест2.Число2 = РС_Тест21.Число1
    И РС_Тест2.Число3 = РС_Тест21.Число3».

    И при анализе плана запросов видим, что используются таблицы с большим количеством строк (Фактическое количество строк = 2 млн.).

    Вопрос: почему в первом случае получаем наборы по 5 строк, а во втором — 2 млн. ?

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

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

  12. bsi

    в http://infostart.ru/public/308762/ есть ряд интересных скриптов, в т.ч
    Планы запросов
    Самые тяжелые запросы:

    SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
    ((CASE qs.statement_end_offset
    WHEN -1 THEN DATALENGTH(qt.TEXT)
    ELSE qs.statement_end_offset
    END — qs.statement_start_offset)/2)+1),
    qp.query_plan,
    qs.execution_count,
    qs.total_logical_reads, qs.last_logical_reads,
    qs.total_logical_writes, qs.last_logical_writes,
    qs.total_worker_time,
    qs.last_worker_time,
    qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
    qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
    qs.last_execution_time

    FROM sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
    ORDER BY qs.total_logical_reads DESC — logical reads
    — ORDER BY qs.total_logical_writes DESC — logical writes
    — ORDER BY qs.total_worker_time DESC — CPU time

    результат которого дает нам и тексты и ПЛАНЫ этих запросов!

    я то думал, что план запроса мы можем посмотреть только он-лайн в профайлере в момент выполнения запроса. а оказывается «у нас все ходы записаны» — можно отбирать тяжелые запросы с их планами, анализировать. остается только сопоставить запрос субд с местом в коде 1с.
    или я опять заблуждаюсь?

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

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

  13. bsi

    Андрей, как Вы оцените «Инструменты разработчика» от tormozit ( http://devtool1c.ucoz.ru/ ) для анализа производительности 1с?

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

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

  14. bsi

    настроил профайлер на показ длительных запросов — вижу тексты запросов. ок.
    хочу еще видеть их планы. включаю показ планов — показывает планы ВСЕХ запросов. можно как-то настроить, чтобы был показ планов только длительных запросов?

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

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

  15. imagik

    Что такое логическое чтение?

    Как все же добиться контекстного выбора зарезервированных слов при написании запроса, как, например в 1с — ctrl+Пробел? Просто приходится полностью весь запрос писать руками…

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

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

      • imagik

        Вопрос про запросы в SQL: как там вызвать контекстную подсказку и есть там конструктор запросов?

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

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

  16. imagik

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

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

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

  17. imagik

    Где сохраняются шаблоны трассировок? Чтобы при необходимости можно было их удалить?

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

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

  18. imagik

    Можно ли создать отдельную базу для сохранения таблиц трассировок или это должна быть обязательно системная таблица, типа Master ?

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

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

  19. imagik

    Чем отличается событие SQL:StmtCompleted от SQL:BatchCompleted ?

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

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

      • imagik

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

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

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

  20. imagik

    Как быть, если запрос вообще не может выполниться до конца, просто зависает и выкидывает из базы? Как его проанализировать?

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

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

  21. Spakus

    Здравствуйте, Андрей.

    Ответьте, пожалуйста, на следующие вопросы:
    1) Допустим в одном запросе соединяются сразу 3 таблицы. Имеет ли значение порядок соединения таблиц в 1С? Если имеет значение, то каким образом выбирать порядок?
    Т.е. скорость выполнения запроса при соединении сначала таблиц «1-2», а потом «1-3» будет такой же, что и при соединении таблиц «1-3», а потом «1-2»?

    2) Допустим 2 таблицы соединяются по полям А, Б и В.Имеет ли значение порядок соединения по полям таблиц 1 и 2? Если имеет значение, то каким образом выбирать порядок?

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

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

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

  22. Дмитрий

    Добрый день.
    Правильно ли я понимаю что если у нас кластерный индекс то в процессе поиска по индексу можно накладывать условия не только на поля самого индекса но и на поля «основной» таблицы?

    В плане запроса столкнулся с такой операцией

    Clustered Index Seek(
    OBJECT:([UT_Test].[dbo].[_AccumRgT10022].[_Accum10022_ByDims_TRRR] AS [T3]),

    SEEK:([T3].[_Fld11130]=[@P3] AND [T3].[_Period]=[@P4]),

    WHERE:(([UT_Test].[dbo].[_AccumRgT10022].[_Fld10019] as [T3].[_Fld10019] = CONVERT_IMPLICIT(numeric(21,3),[@P5],0)
    OR [UT_Test].[dbo].[_AccumRgT10022].[_Fld18625] as [T3].[_Fld18625] = CONVERT_IMPLICIT(numeric(21,3),[@P6],0)
    OR [UT_Test].[dbo].[_AccumRgT10022].[_Fld18626] as [T3].[_Fld18626] = CONVERT_IMPLICIT(numeric(21,3),[@P7],0))
    AND ([UT_Test].[dbo].[_AccumRgT10022].[_Fld10019] as [T3].[_Fld10019] = CONVERT_IMPLICIT(numeric(21,3),[@P8],0)
    OR [UT_Test].[dbo].[_AccumRgT10022].[_Fld18625] as [T3].[_Fld18625] = CONVERT_IMPLICIT(numeric(21,3),[@P9],0)
    OR [UT_Test].[dbo].[_AccumRgT10022].[_Fld18626] as [T3].[_Fld18626] = CONVERT_IMPLICIT(numeric(21,3),[@P10],0)))

    В самом же индексе есть только поля:
    _Fld11130
    _Period
    _Fld10015RRef
    _Fld10016RRef
    _Fld10017RRef

    т.е. в плане есть условия по полям Fld18626 и Fld10019 которые есть в основной таблице но нет в таблице индекса.

    п.с. Что делай CONVERT_IMPLICIT? В интернете при беглом поиске не нашел.

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

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

      • Дмитрий

        >Условия наложить конечно можно, но в этом случае будет сканирование индекса, а не поиск.

        Почему тогда в плане идет Clustered Index Seek, а не Clustered Index Scan?

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

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

  23. gudkov

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

    Подскажите, почему в Профайлере нет фильтра Database Name?

    Пробую на Microsoft SQL Server 2008 R2.

    6f7cc8e54226160e542d39ae0c145c9a.png

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

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

      • gudkov

        Появился, когда поставил «Показывать все колонки».
        Спасибо за подсказку.

  24. Денис

    Добрый день!
    Возможно ли оптимизировать запись набора записей в регистр? При анализе ЦУП самый большой вес имеет именно запись НабораЗаписей Регистра накопления (План запроса во вложении)

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

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

  25. 2tone

    Что означает в плане запроса в задании 9-2 обращение к tempdb в некоторых строках.
    Table Scan(OBJECT:([tempdb].[dbo].[#tt43]

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

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

  26. ig0z

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

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

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

  27. sam1c55r

    при анализе плана запроса 9-2 для оператора Nested Loops в строках 22,28,49 не могу определить, откуда берутся данные для ведомой таблицы?

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

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

  28. evgenylavelin

    День добрый, Андрей.
    Пытаюсь проанализировать один отчет.
    Собрал информацию с помощью SQL Profiler.
    Нашел долгий запрос.
    Графический план запроса получился не маленький (см скрин.).
    Пытаюсь найти текстовый план запроса….
    Поднимаюсь выше по списку до первого «Showplan ALL», а в нем план уже другого запроса(см скрин.).

    Пробовал смотреть следующие строки с «Showplan ALL» выше по списку..пролистал несколько страниц и ….не нашел ничего похожего.

    Соответственно вопрос. Можете подсказать, как мне найти текстовый план под искомый запрос?

    abfa0574ceeb85f32794730f847f94fd.pngfbdf6c14bb05fb1b576a36db0c379a0e.png43f284b34028b31c0fed4b1b4a72c73c.png

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

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

      • evgenylavelin

        А в «Showplan ALL» разве нет текстового плана?

        Добавил событие Showplan Text.
        Попытался изобразить вопрос(см скрин.)
        Т.е. суть вопроса: Для одно события «SQL: BatchCompleted» есть планы Showplan ALL и Showplan Text, а для другого ..не нахожу.
        Или я не так смотрю?

        9c4f9339641aaf3ab674764101d505e6.png

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

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

  29. mmch

    Андрей, походу возникло несколько вопросов…
    Если они уже задавались — прошу прощения.

    ВОПРОС 1: Имеет ли значение порядок полей в параметрах виртуальной таблицы, да и в обычном условии? Если в регистре Первым идет измерение Склад, а вторым номенклатура, то при установке условия надо соблюдать очередность? Или система автоматически распознает индекс?

    ВОПРОС 2: Правильно я понял, что при использовании виртуальных таблиц остатков или срезов, оптимальнее наложить фильтры в параметрах виртуальной таблицы, выгрузить получившийся результат во временную, и далее использовать временную таблицу. Т.е. по по возможности избегать любых связей с виртуальной таблицей?

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

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

  30. EzYCaT

    Добрый день!
    Подскажите, какой номер ответах выбирать: номер строки из Excel или №п/п из самого плана? Даже в решениях по-разному… и получается что всё время мимо на единицу :)

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

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

      • EzYCaT

        9-2. Table scan. Взял №п/п. Просмотрев решение, сделал вывод, что надо брать строку Excel.

        14. Исправился, взял строку из Excel, а в решении №п/п.

        Из-за такого недоразумения даю неточные ответы, отличающиеся на 1.

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

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

  31. Eugeeny

    Здравствуйте, Андрей.
    На практике некоторое время назад столкнулся со странным поведением 1С на MS SQL. Был у меня отчет, который пользователям было необходимо формировать за год, выводился весь проданный товар с группировками по дням, и формировался он часа 2-3. В какой-то момент мы перешли на платформу 8.2.19, до этого была 8.2.17. И как только произошел переход на 8.2.19, этот отчет перестал формироваться за весь год, стал расти TempDB занимал все место это около 150ГБ и 1с вылетала. В итоге было точно установлено опытны путем, что дело в платформе. Когда вернулись к 8.2.17 отчет снова стал формироваться. Как можно объяснить произошедшее, ведь sql оставался неизменным? Выходит, что на принятие решения, оптимизатором о выборе плана запроса, оказывает влияние версия платформы 1С?

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

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

  32. lexbond

    Как можно АВТОМАТИЧЕСКИ достать из sql profiler текстовый план запроса? Сохраняю в SQL таблицу, текстовый план сохраняется в BinaryData. Как вытащить?

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

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

  33. Меренкова Анна

    Добрый день!
    Не могу разобраться, в каких случаях в плане запроса появляется оператор Filter(WHERE:(STARTUP EXPR(…))). В ходе экспериментов с запросами, получить этот оператор так и не удалось. Условия «ГДЕ» обычно преобразуются в «seek … where» или «where», условия «ИМЕЮЩИЕ» — тоже. Что же означает Filter? Может ли его появление замедлять запрос, или это наоборот оптимизация?
    Вопрос возник в ходе изучения плана из практического задания 9-2.

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

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

  34. dunaev.anton

    День добрый
    скопировано с http://www.gilev.ru/privacystatement/

    query:eq property=»Name» value=»DBMSSQL»/— собирает события исполнения операторов SQL СУБД Microsoft SQL Server и также ограничивает порогом снизу в 10 секунд фильтром query:ge property=»Duration» value=»10000″/

    Подскажите это опечатка ? имелось в виду секунда ?
    По крайней мере в курсе сказано что время в ТЖ задается как 10000 = 1 секунда

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

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

  35. Еникеев Марат

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

    • Татьяна Гужавина

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

  36. bas

    Андрей, добрый день!

    Подскажите, пожалуйста. В настольной книге эксперта встретил фразу относительно ЦУП на стр. 147:
    «После завершения теста (или интересной активности в рабочей базе) подождать 1 минуту, выключить счетчики.»

    Зачем перед выключением счетчиков дополнительно ждать 1 минуту?

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

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

  37. lexbond

    Что означает в ROWS в плане запросов кавычки или точки: «0 ..1043 ?

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

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

      • lexbond

        Это план из практического задания 9-2. 1,5 строки запроса.

        Замечание. В решении Вы указываете номер строки Excel, а есть еще номер строки плана, колонка «№ п/п», иногда возникает небольшая путаница.

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

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

  38. adelpieroff10

    Здравствуйте!
    1) По мотивам разбора в видео плана запроса (где было соединение табличной части док-та с регистром остатков). Если бы предварительно остатки регистра поместили во временную таблицу, а потом уже соединяли с таб. частью — это было бы более оптимально? 2) И второй вопрос — попытался что-то такое соорудить, плюс для временной таблицы установил индексируемые поля в запросе по тем полям, по которым дальше идет соединение. В итоге в плане запросов применяется оператор Table Scan, хотя я думал, что будет организован какой-то поиск по созданному индексу.

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

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

  39. kofan74

    Здравствуйте, Андрей!

    При запуске трассировки в событии Showplan XML нет фактического количества строк, а в событии Showplan XML Statistics Profile — есть (MS Sql 2005). В событии Showplan XML предполагаемый план запроса?

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

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

  40. pyatkin

    Добрый день, Андрей.
    Организационный вопрос. Тексты запросов в заданиях не открываются в конфигурации в конструкторе запросов. Или не ту конфигурацию скачал, или надо уметь читать тексты запросов без конфигуратора?

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

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

  41. andreyka

    Андрей и еще вопрос по сервису «Анализ долгих запросов». Встречаются запросы типа ‘UPDATE T2 SET _Fld8793 = T2._Fld8793 + T1._Fld8793… или INSERT INTO _AccumRg8737… Это значит, что идет запись в РН или обновление таблиц? Если эти запросы выполняются долго, то нам тоже необходимо расследовать почему так, почему запись в регистр происходит долго, верно?

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

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

  42. andreyka

    Андрей, здравствуйте! У меня два вопроса:

    1. В облачном сервисе «Анализ долгих запросов», в деталях ранжирования не всегда есть план запроса, почему так происходит.

    2. Для MSSQL рекомендуют использовать смещение дат 2000. Читал, что у MSSQL есть определенные проблемы с датами, коих нет в других СУБД. Можете пояснить, зачем нужно использовать смещение дат?

    Спасибо!

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

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

  43. hakz

    1. имеется система 1000 пользователей. Как без помощи цуп понять сколько было таймаутов и деделоков в системе за прошедшие сутки на уровне субд и на уровне 1С

    2. имеется система на 1000 пользователей — пользователи периодически жалуются что их выкидывает из системы. как понять — это массово или нет и сколько было таких случаев за сутки.

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

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

  44. Денис

    Андрей, подскажите, пожалуйста, с чем может быть связано значительное время выполнения запросов из типового отчета анализ счета УПП (до 400 сек), в плане запроса я проблем не увидел может Вы увидите

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

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

      • Денис

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

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

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

  45. SSkripagan

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

    В одном из занятий слышал тезис, что показатель ЦУП «Суммарное время выполнения запросов» более 40, говорит о неработоспособности базы (прошу прощения за точность, но смысл понятен).

    Столкнулся с проблемой.
    Данный показатель на протяжении долгого времени на уровне 7 000 — 8000 сек.

    Причем в системе не наблюдается блокировок, взаимоблокировок, таймаутов.

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

    Я ошибаюсь ?

    7a9dbc3677d6787f4f124affe3def5a7.jpg

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

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

    • GilevSlava

      если у вас сервер одновременно выполняет 40 запросов длительностью 1 секунда у каждого запроса — будет ли в этот момент суммарная длительность 40 секунд? можно ли такую ситуацию считать «неработоспособной»?

    • GilevSlava

      7000 секунд — откройте консоль администрирования сервера 1С, отсортируйте список «сеансов» по колонке «захвачено СУБД», скорее всего сверху будет ваш виновник с длительным запросом для кого-нибудь отчета или фоновое задание делающее что-то вроде обмена, закачки или перепровдения

  46. Sieg Heil

    В архиве к 9-му заданию присутствует лишний, видимо случайно попавший, архив к 7-му заданию ;-)

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

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

  47. gosn1ck

    Андрей, в текстах запросов отсутствует сортировка, для чего оптимизатор сортирует в нашем случае таблицы ? это подготовительная операция для «ОБЪЕДИНИТЬ ВСЕ» ?

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

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

  48. Kir

    Добрый день.
    Вопрос по выполнению 14 практического здания.

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

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

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

  49. Kir

    Добрый день.
    Проанализировав текст запроса SQL из задания 14 возник вопрос:
    Предопределенные или пустые значения передаются в запрос как параметры. Правильно ли я понимаю что получения их значений формируются отдельные запросы?
    Если предопределенное значение используется в запросе несколько раз запрос по получению его значения тоже будет выполнен несколько раз? Как оптимальнее строить такие запросы? получать предопределенные или пустые значения в объектной модели и передавать их параметрами в запрос?

    Параметр содержащий массив значений транслируется в выражение (?,?,?,?). правильно ли я понимаю, что в данном случае количество знаков вопроса соответствует количеству элементов в переданном массиве?

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

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

  50. crabzzy

    В задании 12 есть строка: «Проанализируйте код из вложенного файла и укажите на неоптимальные решения»

    Отсутствует вложенный файл

    • Татьяна Гужавина

      Добрый день!
      Благодарим за внимательность. Архив добавлен.

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