Курс по Оптимизации 1С – Занятие №4
В рамках этого занятия необходимо изучить следующие материалы.
Модуль 3. Причины медленной работы
- Глава 8. Анализ причин медленной работы и оптимизация системы
- Основные принципы оптимизации
- Схема работы запросов в 1С
- Основные сведения о плане запроса
- Соответствие таблиц в СУБД объектам метаданных
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (92):
Комментарии закрыты
Добрый День.
Просматриваю курс из модуля 3, №8 План запроса. Пример с SQL Profiler.
Настроил четыре основных параметра для анализа.
Но с вашим принскрином – мой не совпадает в частности с таким параметром,
как “SQL:BatchCompleted” у вас, а у меня результат отображения больше всего похож в “RPC:Completed”.
С чем вызвана такая разница?
Паузу нажимал после выполнения запроса.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день, выполнили Обновление статистики, Реиндексацию, Тестирование и исправление. После этого заметили, что bak базы средствами SQL-сервер уменьшился примерно на 10 Гб (с 32 Гб до 22 Гб). Вопрос №1: рекомендуете ли после перечисленных выше операций выполнить операцию “Сжать базу” средствами SQL-сервер? И если да, то нужно ли ставить галочку на опции “Реорганизовать файлы при освобождении неиспользуемого места…” Вопрос №2: Сколько оставлять места под журнал логов для базы? (задается в SQL-сервере)
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте. Выполнили пересчет итогов через Тестирование и Исправление. В режиме 1С:Предприятие на форме Управление итогами данные не изменились. В “Рассчитан по ” стоит дана 28/02/2014. Пересчитались ли у нас итоги по всем периодам до настоящего времени? Еще вопрос: если включена опция “Использовать текущие итоги”, итоги по периодам вообще не используются? Если опция “Использовать текущие итоги” выключена, то текущий остаток вычисляется как сумма итогов за последний рассчитанный период + движения до текущей даты?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте. 1.Значит, пересчет итогов из конфигуратора в моем случае выполнился с 28/02/2014 по текущее время, в соответствии с установленной границей рассчитанных итогов? 2.В УПП “Управление итогами” нужно только для установления периода рассчитанных итогов и для разделения итогов по регистрам? Если я сейчас установлю границу рассчитанных итогов по 01.08.2015, у меня выполнится пересчет итогов с 01.08.2015 по 20.10.2015 и Регистры остатков и оборотов не будут хранить информацию об итогах за более ранние периоды (01/07/2015, 01/06/2015 ит.д)?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо. Удаление помеченных объектов выполнялось за 10 минут, пересчет итогов – очень долго. Выполнили Обновление статистики, Реиндексацию, Дефрагментацию.Пересчет итогов выполнился быстро – минут десять, зато Удаление помеченных объектов теперь выполняется 4 часа. С чем это может быть связано? И еще вопрос : где в УПП найти настройку Минимальный период рассчитанных итогов?
…
(текст комментария доступен только участникам Мастер-группы)
Извиняюсь, если не в то занятие адресую вопрос.
Вот тут http://v8.1c.ru/konf0613/files/13/sec_cio/09_00_83_nuraliev_s.pdf
написано что установка минимального периода рассчитанных итогов позволяет
сократить объем хранимых данных
Ускоряет пересчет итогов
Ускоряет работу неоптимальных запросов (полный скан таблицы итогов)
Ускоряет запись движений задним числом
Если можно прокомментируете за счет чего все это происходит или может быть наведете где об этом можно почитать?
…
(текст комментария доступен только участникам Мастер-группы)
Вопрос по профайлеру – если им пользоваться в рабочей базе с десятками пользователей то найти проверяемый запрос очень затруднительно. Как вы решаете этот вопрос в реально работающих базах? Или для анализа нужно разворачиваете отдельный сервер с копией базы? И влияет ли на составление плана запроса загруженность СУБД(т.е. могут ли быть различные планы на один и тот же запрос при разных нагрузках)?
…
(текст комментария доступен только участникам Мастер-группы)
День добрый.
Вы можете выложить рабочую консоль запросов с выводом плана запроса? В консоли из конфигурации плана запросов нет. Консоль с сайта 1с в вашей конфигурации не работает. Выдает ошибку:
по причине:
{Форма.Форма.Форма(34,2)}: Переменная не определена (ЭтотОбъект)
<<?>>ЭтотОбъект.Заголовок = ЗаголовокФормы;
{Форма.Форма.Форма(1050,90)}: Переменная не определена (ЭтотОбъект)
ТекущийЗапрос.АдресРезультатовЗапроса = ПоместитьВоВременноеХранилище(Результат, <<?>>ЭтотОбъект.УникальныйИдентификатор);
При проверке модуля, подобных ошибок ещё с два десятка.
p.s. Вам стоило сделать какую-то вменяемую инструкцию по перечню и версиям ПО используемых при прохождении курса. И как их лучше ставить. Чтобы перед прохождением курса можно было сразу настроить всю “песочницу” и потом на это не отвлекаться. Т.е., как минимум, сразу поставить mssql и 1с нужных версий. Приходится проходить через все грабли и терять кучу времени на это.
Поставил сервер 8.2 и MS Sql на разных машинах – пришлось переставлять на одну. Теперь обновил сервер 8.2 на 8.3, чтобы заработала консоль с планом запросов. Так и она не заработала.
…
(текст комментария доступен только участникам Мастер-группы)
В итоге, консоль взял с сайта итс для 8.3. Чтобы она заработало пришлось в вашей конфигурации отключить режим совместимости.
Пересчет итогов по сути – это просто удаление нулевых строк в таблицах итогов?
Выполняются ли ещё какие-то действия при этом?
…
(текст комментария доступен только участникам Мастер-группы)
После включения разделения итогов для регистра, в процессе обновления информационной базы в строке состояния отразилось – “Пересчет итогов регистра..”.
А почему они вдруг начали пересчитываться, что-то не совсем ясно…
…
(текст комментария доступен только участникам Мастер-группы)
Делаю запрос к справочнику «Номенклатура» и выбираю поле «НаправлениеДеятельности»,
оптимизатор выдает вложеный цикл причем предполагаемое количество строк 1 а фактическое 70!
в справочнике НаправленияДеятельности 4 элемента всего.
Какие причины такого поведения оптимизатора?
…
(текст комментария доступен только участникам Мастер-группы)
запрос возвращает 81 строку.
Все верно с выводом, это я понимаю, так как в ведомой таблице 81 строка. а почему он в предполагаемое количество строк ставит 1 ,не 4 как записано статистике?
…
(текст комментария доступен только участникам Мастер-группы)
При попытке просмотреть план запроса в консоли запросов 8.3 выдает ошибку.
Релиз платформы 8.3.6.2014
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Запускаю обработку Консоль Запросов 8.3. При попытке открыть План запроса выдает ошибку “Неправильный путь файла”. Анализирую ожидаемое имя файла и фактическое – они разные.
Ожидаемое: “15051905.log”
Фактическое: “15051914.log” и “15051915.log”
В результате лог-файл программа не находит.
В чем дело?
…
(текст комментария доступен только участникам Мастер-группы)
Почему может быть, что у меня при чтении графического плана запроса отображаются другие показатели. Т.е. нет Количество предполагаемого и фактического выполнения?
…
(текст комментария доступен только участникам Мастер-группы)
Возник такой вопрос. Функция ПолучитьСтруктуруХраненияБазыДанных() не показывает общие метаданные? Подсистемы, критерии отбора? как узнать, как они называются в СУБД ?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Скажите: имею данные по нулевым строкам (скриншот). Что скажите по цифрам? Получается, что пересчет итогов вообще никогда не выполнялся!? (скриншот на экран полностью не уместился) И еще, возможно пересчитать итоги средствами самой SQL, не задействуя сам 1С? Можете показать примерный скрипт или есть соответствующие инструменты? Спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо! :)
Добрый день! Вопрос по Profiler’у, настроил трассировку, получаю планы запросов, все отрабатывает. Файл трассировки сохранил. Открываю заново Profiler, пытаюсь открыть сохраненную трассировку и подучаю ошибку:”Невозможно воспроизвести текущую трассировку из-за отсутствия некоторых событий ..” (приложил скриншот). Скажите, что не так сделал? Еще вчера трассировка работала. Конечно, я создал свой шаблон и пока запускаю из него новые трассировки, но хочется узнать, где ошибся. Спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Открываю двойным щелчком, все равно, трассировка не запускается. Может тут есть еще какие-нибудь настройки? Спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Вопрос по ссылкам и представлениям. Если я пишу в консоли запрос типа “Выбрать ссылка из Справочник.Номенклатура”, то в окне вижу наименование. По плану запроса видно, что наименование не выбирается. Кто, когда и как подменяет ссылку наименованием? Если это делает сервер 1С предприятия, то может случиться так, что он возьмет наименование из кэша, без обращения к базе? У меня был отчет, который работал быстрее, если в запросе бралась только ссылка, без наименования (хотя 1С рекомендует наоборот). Правда, это было давно (на 8.1 или 8.0, точно не помню).
…
(текст комментария доступен только участникам Мастер-группы)
Правильно я понимаю, что для пакетных запросов 1С генерирует последовательно несколько SQL-запросов, а затем оптимизатор разбирается с каждым отдельно?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Есть ли способ в Profiler-е наложить отборы на определенный запрос? У меня есть отчет, который выполняется 20 минут, и даже если я установил рекомендуемые Вами фильтры, в трассировке получается очень много данных. Посоветуйте, пожалуйста, как лучше сделать подобный отбор, чтобы не “отсечь” нужные данные (графический план, текстовый, сам текст запроса)?
…
(текст комментария доступен только участникам Мастер-группы)
попробуйте увеличить значение в колонке Duration
Добрый вечер !
Про просмотре 8-го урока по Планам запросов, в видеоуроке при выполнении простейшего запроса в Profiler создался запрос:
SELECT
T1._Description
FROM dbo._Reference95 T1 WITH(NOLOCK)
У меня создается:
SELECT
T1._Description
FROM dbo._Reference95 T1
т.е. не – без блокировки данных WITH(NOLOCK)
У меня я так понимаю, данные блокируются на время чтения или нет?
И с чем это может быть связано?
…
(текст комментария доступен только участникам Мастер-группы)
Андрей, добрый день!
Вчера столкнулся с ситуацией, которая имеет косвенное отношение к теме курса и относится скорее к первому занятию, но обсуждение там уже закрыто. Если можно – ответьте на мой вопрос здесь, пожалуйста.
У клиента внезапно возникли проблемы с загрузкой операционной системы после рестарта сервера. По словам клиента, при входе в ОС после ввода пользователя и пароля система повисает. Естественно они обратились с проблемой к администратору, он провел какие-то настройки и все заработало.
Стал смотреть, что именно он сделал и обнаружил, что в свойствах 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 настроен предел превышения памяти и выполнены прочие общие настройки, которые Вы советовали в видео-уроках. Никаких экзотических настроек не делалось.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо.
Андрей, добрый день
В примере с Clustered Index Scan сказано, что данный оператор используется при обращении к таблице, содержащей кластерный индекс. Но при просмотре видео видно, что данный оператор был применен только к таблице 8 (Виды товаров), в то время как к таблице 7 (Товары) был применен оператор Index Scan. Если по отдельности выполнить запросы вида “Выбрать ссылка из Справочник.[Товары или ВидыТоваров]”, то будет использоваться также оператор Index Scan. Почему?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте. В примере с nested loops делается упор на том, что, указав в запросе инструкцию “первые”, мы гарантируем маленькие таблицы и соединение в цикле. Но ведь инструкция “первые” относится к результату соединения, она не означает выбор первых N строк из каждой таблицы и только после этого команду соединения. Например в каждой таблице по милиону записей, а в результате соединения получается сто строк, из которых нужно отобрать первые 10. Почему в примере план запроса вначале отбирает записи из каждой таблицы и только потом соединяет?
…
(текст комментария доступен только участникам Мастер-группы)
Не обратил внимание, что таблица одна и та же. Тогда все понятно. Спасибо!
Т.е. система сначала определяет, что таблица одна и та же и из-за этого решает сразу выбрать 5 строк? а если бы были две разные таблицы, то Nested Loops не было бы?
и еще вопрос: что такое hint (хинт) ?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Возник такой вопрос: вы рассказываете, что если система медленно работает только под определенным пользователем, то возможно, это проблема с правами доступа. Непонятно, каким образом права доступа могут влиять на скорость работы. По идее, если прав недостаточно, то работать “не получится совсем”, а не “получится, но медленно”. Или тут имеется ввиду не отсутствие прав, а что-то другое?
…
(текст комментария доступен только участникам Мастер-группы)
В нашем холдинге еще используется несколько 1С 7.7 баз. Размером до 250ГБ. Есть проблемы производительности.
1. Есть ли какое-то средство, кроме профайлера (или дополнительно к нему), которым можно в удобном виде собрать информацию по длинным запросам и СГРУППИРОВАТЬ ее по видам запросов, как это делает сервис Гилева?
2. С помощью тех инструментов, которые мы рассматриваем, я так понимаю, можно будет собрать информацию с СУБД о блокировках и взаимоблокировках. Все остальное идет из ТЖ 1С 8.2. Верно?
…
(текст комментария доступен только участникам Мастер-группы)
для 7.7 прежде всего есть смысл попытаться перенести в архивную базу данные, которые не используются каждый день в оперативной работе
уменьшение базы в 10 раз даст заметный на глаз прирост скорости
В 7.7 можно парсить ошибки в журнале регистрации:
если содержит [HYT00] – это превышение ожидания блокировки, у взаимоблокировки код не помню, но можно, наверно, прямо по слову “deadlock” проверять.
Не знал. Спасибо
День добрый , вопрос по разделу 9.1 курса , по обработке ИнструментыРазработчикаКонсольЗапросов83 . Заработало все хорошо. Ну вот план первого самого простого запроса – отличается кардинально от Вашего . (nested loops к примеру) . в чем причина ?
База Ваша , индекс по полю цена – присутствует.
…
(текст комментария доступен только участникам Мастер-группы)
ясно.спасибо
Хотя уже сомневаюсь что дело в доп.упорядочивании .(посмотрите на скрине в плане 1) дальше Вы как раз приводите пример со справочником элементы , и появляется nested loops из-за “старой” статистики. Возник сразу вопрос – а что считается “старой” статистикой , когда после последнего её обновления – были любые изменения данной таблицы , и еще галка в свойствах базы на sql – auto update statistics , она по сути заменяет регл .задания по обнов.стат ? и еще – а что такое auto update statistics asynchronously . спасибо
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте
Подскажите пожалуйста, какой смысл отключать итоги при массовом проведении документов, если в проведении этих документов повсеместно используются виртуальные таблицы?
УПП.
…
(текст комментария доступен только участникам Мастер-группы)
Если итоги выключены, то виртуальные таблицы просто не будут работать.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Всегда думал, что запрос TOP N влияет только на выходное количество строк. Но по плану запроса изменяя ПЕРВЫЕ N от 5 до 500 мы видим изменения количества строк при сканировании индекса.
Данное поведение гарантировано или зависит от догадливости оптимизатора?
…
(текст комментария доступен только участникам Мастер-группы)
Андрей,
использую базу БазаДляКурсаПоУскорению1С
но в ней не запускается обработка с ИТС ИнструментыРазработчикаКонсольЗапросов83
Ошибка
{Форма.Форма.Форма(34,2)}: Переменная не определена (ЭтотОбъект)
<>ЭтотОбъект.Заголовок = ЗаголовокФормы;
{Форма.Форма.Форма(1050,90)}: Переменная не определена (ЭтотОбъект)
ТекущийЗапрос.АдресРезультатовЗапроса = ПоместитьВоВременноеХранилище(Результат, <>ЭтотОбъект.УникальныйИдентификатор);
Возможно в базу нужно вставить функционал из БСП?
…
(текст комментария доступен только участникам Мастер-группы)
какую обработку тогда использовать?
Обработка для тонкого клиента также открывается с ошибками
{Форма.Форма.Форма(2,2)}: Ожидается оператор препроцессора
#Область ОбработчикиСобытийФормы
{Форма.Форма.Форма(1587,2)}: Ожидается оператор препроцессора
#КонецОбласти
Андрей, может просто выложите свои обработки?
…
(текст комментария доступен только участникам Мастер-группы)
Незначительная неточность в слайде. Пиктограммы на слайде индексов и кластеризованных индексов отображены как одинаковые, на самом деле это не так (в материалах это тоже не так).
p.s. Есть вопрос на тему сдачу экзамена “Эксперт по технологическим вопросам”. Не удалось найти информации о том, для каких целей необходим этот сертификат. Что он дает, если не брать в расчет “я молодец”, скажем работодателю-франчайзи?
…
(текст комментария доступен только участникам Мастер-группы)
возможно сейчас ситуация поменялась, раньше точно было что
влияет на цену при продаже упп на большое количество пользователей, при отсутствии у франча таких сертификатов цена дороже )
для конечного заказчика цена не зависит от сертификата
Здравствуйте. У меня вопрос по различию событий Show plan Statistic Profile и Show plan profile. Когда мы на экзамене Эксперта разбирали причину ошибки в запросе, мы использовали Show plan profile. На вопрос, почему не Show plan Statistic Profile экзаменаторы ответили, что это планируемый план выполнения запроса, и не факт, что потом запрос выполнится по этому плану. Можете пояснить этот вопрос? В итоге, каким событием лучше пользоваться?
…
(текст комментария доступен только участникам Мастер-группы)
В “Настольной книге эксперта” на стр. 87 приводится описание полей в всплывающей подсказке оператора плана запроса, в т.ч. там описываются поля “Предполагаемое количество строк” и “Фактическое количество строк”. Далее идет сноска, в которой говорится, что если мы смотрим “реальный (действительный)” план запроса, то ожидаемое кол. строк = фактическое кол. строк. А чтобы узнать сколько строк действительно ожидалось, необходимо смотреть “ожидаемый план, например, через событие Showplan XML”.
В связи с вышеизложенным возникает ряд вопросов.
1. Что такое ожидаемый план запроса и действительный (реальный) план запроса?
2. Утверждение насчет “ожидаемое кол. строк”=”фактическое кол. строк” для операторов фактического плана – это ошибка?
3. Я правильно понимаю, что событие Showplan XML – это всего лишь “урезанная версия” события Showplan XML Statistics Profile, в которой есть только информация о предполагаемых параметрах, но нет информации о фактических параметрах выполнения запроса?
…
(текст комментария доступен только участникам Мастер-группы)
Андрей, можно подробнее пояснить (или дать ссылку на источник) как/в какой момент/зачем оптимизатор получае предполагаемый план запроса, а использовать по факту может другой план запроса – фактический?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте, Андрей!
В ролике “План запроса. Соответствие таблиц в СУБД объектам метаданных”, мне кажется, у Вас есть неточность. Вы говорите, что “…Функция ПолучитьСтруктуруХраненияБазыДанных() не показывает некоторые данные, такие как, кластерные индексы, используемые платформой…”
Это не совсем так. Все дело во втором параметре функции. Если его установить в “Истина” (как это сделано в обработке к этому курсу “СтруктураХраненияМетаданныхУФ.epf”), то кластерный индекс виден на стороне 1С.
Или это не он? Имена-то различаются…
…
(текст комментария доступен только участникам Мастер-группы)