Некоторые замечания по ускорению работы управляемых форм

Публикация № 258699

Администрирование - Производительность и оптимизация (HighLoad)

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

Хочу поделиться своим опытом с сообществом. Надеюсь, он будет интересен и полезен разработчикам 1С, которые делают свои приложения на управляемых формах.

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

Операция 1. Рабочее место менеджера по отгрузке

 

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

Медленно выполняется операция по открытию и обновлению этого динамического списка. Среднее время выполнения этой операции у пользователя с включенным RLS составляло примерно 60 секунд. Данное поведение стабильно воспроизводилось и на копии базы. При работе без RLS скорость увеличивалась до 40 секунд.

Начали делать анализ с замера производительности 1С, однако это не дало никакой информации, т.к. операции по обновлению динамического списка в него не попадают. Тогда стали анализировать с помощью SQL Profiler. Обнаружили, что в этой операции выполняется два долгих запроса, т.к. на данной форме располагаются два динамических списка. Второй динамический список располагался на второй закладке, которая не отображалась при открытии, однако данные тот список получал и при открытии, и при выполнении команды «Обновить» из первого списка.

 

Также этот второй список получал данные даже дольше первого.

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

В тексте второго запроса нашли возможность оптимизации запроса. В тексте использовалось разыменование поля составного типа. Используя конструкцию «ВЫРАЗИТЬ» удалось ускорить операцию открытия списка формы, однако незначительно.

Текст до изменения:

 

После:

 

Список до сих пор открывался долго.

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

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

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

 

 

 

В итоге, скорость открытия данной формы возвросла после доработок с 50-60 секунд до 7-10 при проверки открытия пользователем с ограничением по RLS.
Операция 2. Вывод характеристик при подборе товара

 

Обработка подбора, при выборе номенклатуры, и двойном щелчке на ней, обработка «проваливалась» в выбор остатков по характеристике этой номенклатуры.

 

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

 

Замер производительности 1С показал, что получаение остатков не занимает много времени, однако при переходе контектса выполнения на сервер уходит бОльшая часть времени выполнения операции.

 

При анализе кода обработки, мы увидели возможность заменить контекстный вызов функции «ВывестиХарактеристики» на внеконтекстный. Это позволило сократить объем передаваемого трафика между клиентом и сервером и на наших замерах позволило добиться улучшения в два раза, с 5-6 секунд до 2-3.

Операция 3. Динамический список с остатками

Данная операция была определена с помощью сервиска querytj. Она была в топе долгих запросов на первом месте. Вот некоторые данные о самых долгих операциях выполнения данного запроса. Открытие списка доходило до 500 секунд!

 

Определив по контексту место данного запроса, определили его текст в терминах 1С.

 

Оказалось, что это довольно-таки простой запрос. Соединение с  виртуальной таблицей остатков не должно было вызывать проблем, т.к. этот запрос должен был соединяться с таблицей текущих остатков. Также по логике работы текущие остатки должны быть незначительными, т.к. заказы должны закрываться, и в остатках должны оставаться только незакрытые строки.

Однако он выполнялся долго. Просматривая текст запроса, мы нашли участок, приводящий к замедлению. Это было как раз обращение к таблице итогов регистра «ЗаказыНаПеремещение».

 

«Узкое место»

 

Причиной этого удалось быстро найти. Это были нулевые итоги в этой таблице. Так из 238 тысяч записей текущих итогов, 236 тысяч были нулевыми. Это очень замедляло выполнение данного запроса. Подробнее об этом вопросе рассказано тут.

 


Для решения этой проблемы нужно было сделать пересчет итогов. Так до пересчёта итогов – мы наблюдали долгое открытие списка документов Перемещение товаров, иногда задержка составляла более 60 секунд. Но после пересчета итогов, данный список стал открываться за время менее секунды.

Выводы:

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

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

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. speshuric 1189 12.02.14 15:25 Сейчас в теме
Статья в целом неплохая, но вот следующая цитата у меня вызывает вопросы:
В динамические списки не стоит задавать сложные запросы, т.к. он читает данные курсорным способом (выбирая данные порционно), а на сложных запросах, в которых участвует много таблиц, чтение курсорным способом может не быть выполнена оптимально оптимизатором СУБД.

Судя по ТЖ и по трассам 1С 8 курсоры вообще-то не использует. Данные для форм выбираются достаточно неприятно для SQL Server, порционно, но не курсором. Если запрос строится платформой по объекту метаданных, то обычно запрос выглядит примерно так:
ВЫБРАТЬ ПЕРВЫЕ %СколькоТоСтрок%
    Поле1, Поле2, ... ПолеN
ИЗ
    %КучкаСоединений-StarJoin%
ГДЕ
    УпорядоченноеПоле1 > &УпорядоченноеПоле1НачалаСписка ИЛИ
    УпорядоченноеПоле1 = &УпорядоченноеПоле1НачалаСписка И УпорядоченноеПоле2 > &УпорядоченноеПоле2НачалаСписка ИЛИ
    УпорядоченноеПоле1 = &УпорядоченноеПоле1НачалаСписка И УпорядоченноеПоле2 = &УпорядоченноеПоле2НачалаСписка И ... УпорядоченноеПолеN > &УпорядоченноеПолеNНачалаСписка
УПОРЯДОЧИТЬ ПО УпорядоченноеПоле1, УпорядоченноеПоле2, ... УпорядоченноеПолеN 
Показать

Основная проблема тут не только соединения, а чаще условие "ГДЕ". Даже если есть индекс по всем значениям упорядочнивания, начиная с 4-5 полей SQL часто перестаёт понимать, что это всего лишь "выводи записи начиная с ..." и, если первое поле упорядочнивания не даёт достаточно селективного отбора запрос либо уходит в сканы, либо в паралеллизм, либо и то и другое.
В принципе подход 1С понятен:
1. Не использовать курсоры, которые потребуют хранения состояния и сервер 1С перестаёт быть stateless
2. Реализацией на "честном" SQL можно покрыть больше СУБД.
Способы борьбы тоже яснее ясного: отказываться от лишних сортировок, строить индексы "с доп. упорядочиванием"

Ну а если основой запроса является еще и динамический список, то там есть другие моменты: 1С не может гарантировать, что у запроса есть какой-то "уникальный ключ". И поэтому поступает как может. Выбирает сначала первые 1000, потом первые 2000, потом первые 3000 и т.д. Легче всего убедиться в этом, трассируя динамическую форму с таблицей остатков.

Здесь производительность явно принесена в жертву универсальности и авторов платформы в этом можно понять, а нам надо учитывать эту специфику. Курсорность тут ни при чем.
adhocprog; milanse; AllexSoft; agrustny; amon_ra; JesteR; theshadowco; Evil Beaver; sunshineuee; Vladuha; artbear; baton_pk; dour-dead; puzakov; xzorkiix; Sitex; vlad.frost; slavap; fancy; Bronislav; rzabolotin; awk; malikov_pro; kiruha; tormozit; AHDP; cleaner_it; +27 Ответить
2. maddy 18 12.02.14 15:58 Сейчас в теме
В последнем запросе левое соединение стоит заменить внутренним.
По фильтру документы по которым нет остатков отсекаются, результат будет тот же но должен быть быстрее.
talych; artbear; PowerBoy; cleaner_it; +4 Ответить
3. bonv 12.02.14 18:25 Сейчас в теме
Мы решили отключить этот список, и включать его только при открытии пользователем этой закладки. Попробовали сначала отключать его с помощью сброса флажка видимость, однако это не помогло. Запрос все равно получал данные, даже не смотря на то, что список был невидим.


В 8.3 это должны были починить. Сам не проверял.
5. ivanov660 2343 12.02.14 23:31 Сейчас в теме
(3) doxflow, ага в 8.3 есть такое исправление. Сами столкнулись когда пробовали в УТ 11 не последней версии посмотреть работоспособность - старая форма подбора товаров упала (там есть переключения видимости между списками номенклатуры и характеристик, но данные запрашиваются с обоих списков).
4. B2B 266 12.02.14 23:29 Сейчас в теме
По-моему, использовать конструкции типа ТИПЗНАЧЕНИЯ(...) = ТИП(...) абсолютно неправильно. Я бы переписал запрос примерно так:
ГДЕ
    Статусы.Документ ССЫЛКА Документ.ОтборочнаяВедомость
    И Статусы.Документ.Распоряжение ССЫЛКА Документ.ЗаказНаПеремещение
suarez55; EdmundoAlvares; ghostaz; Oleg_nsk; wunderland; Vladuha; kuza_87; pt_olga; kirillkr; burlakov; Nefertary; west__; ivanov660; +13 Ответить
6. ivanov660 2343 12.02.14 23:41 Сейчас в теме
(4) B2B, а вот функции Выразить(поле как тип) довольно разумно, т.к. сокращает количество неявно присоединяемых таблиц
7. Bukaska 134 13.02.14 00:33 Сейчас в теме
(6) ivanov660, Да ВЫРАЗИТЬ - оно почти везде нужно, особенно когда дело касается регистраторов. Так как без данного оператора мы просто вешаем БД)))
10. xzorkiix 32 13.02.14 17:13 Сейчас в теме
(7) Bukaska, а где можно посвятиться по поводу Выразить в запросах?
11. indigo_ 13.02.14 17:39 Сейчас в теме
(10) xzorkiix,
где можно посвятиться

или Вы имели в виду "просветиться" ?
16. speshuric 1189 14.02.14 10:26 Сейчас в теме
(10)
Про "выразить" в запросах по составным типам
19. kuza_87 26 19.02.14 06:29 Сейчас в теме
(4) B2B, Ты прав. Замер производительности не даст соврать!
20. kuza_87 26 19.02.14 06:34 Сейчас в теме
(4) B2B, Сейчас сделал поиски текста запросов с "ТипЗначения()=Тип()" по новейшей конфигурации 1с "Документооборот" и пришел в ужас. 1с-вцы повсюду используют данную функцию!!! Хотя сами больше всех орут про производительность и валят народ на экзаменах при малейших косяках
OrsoBear; bulpi; +2 Ответить
22. OrsoBear 26.02.14 08:24 Сейчас в теме
(20) kuza_87, Те же действия сделал.. Меня не валили. Но не знал про этот косяк. Потому плюс.
21. Andreynikus 1363 20.02.14 12:49 Сейчас в теме
(4)B2B,
Правильнее делать
ТипЗначения()=Тип()
или
Статусы.Документ ССЫЛКА Документ.ОтборочнаяВедомость
И ВЫРАЗИТЬ(Статусы.Документ КАК Документ.ОтборочнаяВедомасть).Распоряжение ССЫЛКА Документ.ЗаказНаПеремещение


Между этими способами нет никакой разницы, запрос на языке SQL будет одинаковым, а условие примет следующий вид: WHERE (T1._RecorderTRef = @P2) AND (T2._Fld781_TYPE = 0x08 AND T2._Fld781_RTRef = @P3)
Это условие довольно простое и оптимизатор может легко его обработать и подобрать оптимальный план.

НО, если написать так как написано в комментарии (4)

Статусы.Документ.Распоряжение ССЫЛКА Документ.ЗаказНаПеремещение

т.е. обратится в условии через точку к полю составного типа, то условие примет вид:
WHERE (T1._RecorderTRef = @P2) AND (CASE WHEN T1._RecorderTRef = @P3 THEN T2._Fld781_TYPE ELSE CAST(NULL AS BINARY(1)) END = 0x08 AND CASE WHEN T1._RecorderTRef = @P4 THEN T2._Fld781_RTRef ELSE CAST(NULL AS BINARY(4)) END = @P5)

В моем случае это привело к сканированию таблицы Т1 и как следствие количество логических чтений выросло в 4 раза, запрос стал работать медленнее. Оптимизатор просто не смог использовать индекс по полю T1._RecorderTRef.

Следовательно лучше использовать ТипЗначения()=Тип() или в условии использовать ВЫРАЗИТЬ при обращении через точку к полю составного типа. Оба этих приема приводят к одинаковому тексту SQL запроса.
alex_4x; talych; Puk2; vbuots; putdv; +5 Ответить
8. DoctorRoza 13.02.14 08:12 Сейчас в теме
Отмечусь, нужно со статьей по-внимательней ознакомиться! :)
9. burlakov 86 13.02.14 14:03 Сейчас в теме
а если бы запрос переписали по человечески - без вложенных запросов, то было бы еще быстрее. и никакого профайлера не надо.
12. AllexSoft 13.02.14 18:22 Сейчас в теме
Неплохая статья... в целом как обмен опытом то плюс... опять же вопрос к Доржи, когда уже будут Кейсы для внедренцев\разработчков... а то статьи разбросаны, потом фиг найдешь (
13. Evgen.Ponomarenko 549 13.02.14 21:58 Сейчас в теме
(12) AllexSoft,
Ага... всего-то требуется сделать "человеческое" управление функциями "Мои рекомендации","Мои загрузки" и "Мои комментарии".
14. asved.ru 35 14.02.14 07:18 Сейчас в теме
В порядке работы допущена, я бы сказал, методическая ошибка: исследования должны проводиться на оптимальном состоянии БД. Что это значит: итоги пересчитаны, индексы и статистики актуальны, регламентные операции по поддержке такого состояния автоматизированы.

Приведение БД в оптимальное состояние не требует трудозатрат высококвалифицированного специалиста и может существенно сэкономить его трудозатраты на этапе анализа и решения проблем: в вашем случае работы по п.3 вообще бы не потребовались.

agrustny; +1 Ответить
15. gaglo 14.02.14 10:23 Сейчас в теме
А что за конфигурация исследовалась, если не секрет? Или хоть общими словами: чья-то полностью самописная, или стандартная, или стандартная, но доработанная по методу Франкенштейна?
agrustny; +1 Ответить
17. Stas-ch 34 17.02.14 10:48 Сейчас в теме
(15) gaglo, Судя по скринам это УТ-11.
18. gaglo 17.02.14 10:57 Сейчас в теме
(17) Ну и интересно же, что эти тормозные операции 1 и 2? Сразу были в УТ-11 такими или же их некто "доработал"?
23. GROOVY 2556 26.02.14 13:34 Сейчас в теме
Про динамический список: А условие в левом соединении ...Остатки(, {Товар КАК Ссылка})... не решит проблему выбора левых пустых остатков?
24. StaticUnsafe 07.03.14 10:32 Сейчас в теме
Спасибо за статью. Были проблемы с избытком динамических списков на УФ. До трех на одной форме со сложными запросами. Благодаря советам удалось оптимизироваться.
25. Sasha255n 14.03.14 13:04 Сейчас в теме
Да соглашусь с предыдущими ораторами не понятно что за конфигурация
26. vermouth 26.07.14 15:44 Сейчас в теме
А условие из ГДЕ нельзя перенести в условие виртуальной таблицы РегистрНакопления.ЗаказыНаПеремещение.Остатки() ??
27. sanfoto 499 05.10.14 14:20 Сейчас в теме
(0) rzabolotin,

В итоге, скорость открытия данной формы возвросла после доработок с 50-60 секунд до 7-10 при проверки открытия пользователем с ограничением по RLS.


Кстати вставлю свой пример про (псевдо) "Управляемые формы" : была подобная проблема на моноблоках обработка открывалась от 60 сек до 3 минут....
в отладчике смотрели запрос выполняется быстро не более 1сек. (На обычном/не древнем десктопе форма открывалась несколько секунд).
Решили что проблема с отрисовкой формы... видюха на моноблоке слабая....ничего не поделаешь.

Но помог случай)) сломался на моноблоке HDD (вечером) .... заменить было нечем - новый привезут еще когда.... и как раз у нас были в отделе несколько SSD .... взяли.. поставили... накатили OS +1с
и о чудо обработка открывалась не более 3 сек!!!!! вот такой "тонкий клиент" однако... якобы совсем для слабого оборудования предназначен... угу ага)))
28. Bukaska 134 06.10.14 11:21 Сейчас в теме
(27) sanfoto, Ну так.. 1с же беспокоит дисковое пространство. Чем быстрее диск, тем более быстрее открываются данные)))

о чудо обработка открывалась не более 3 сек!!!!! вот такой "тонкий клиент" однако... якобы совсем для слабого оборудования предназначен... угу ага)))

Если говорят про слабое звено, то все равно нужно смотреть посильнее звено.. Это же все таки программа)))
29. AllexSoft 06.10.14 11:40 Сейчас в теме
была проблема из запроса заполнялась таблица значений на форме.. Таблица заполнялась очень долго, полезли смотреть почему, думали запрос тормозной (а он реально большой был). Нет, запрос отрабатывал быстро, а вот с передачей с сервера на клиент или с отрисовкой таблицы были какие то тормоза ужасные. 1000позиций всего лишь - отображалось минут 5! Диски SSD - база небольшая, локальная, просто для теста взяли. Победить так и не удалось (
30. Tanis 24.12.14 14:05 Сейчас в теме
Спасибо большое!
Но возник вопрос.
Составляю форму реквизитов, ставлю запрос. А вот наименование никак не выводит. Как его получить в эту нарисованную форму?
Спасибо!
31. Tanis 24.12.14 16:08 Сейчас в теме
Если правильно понял, то ни строка ни ссылка не передается. :-(
Либо что-то изначально поставил не так.
Можете чуть подробнее подсказать, где настроить и как основные элементы чтоб использовать это условие?
Оставьте свое сообщение

См. также

Исследование технологического журнала 1С при помощи регулярных выражений в блокноте Промо

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Все из тех, кто пробовали сдать на сертификат "Эксперт по технологическим вопросам 1С", сталкивались с методикой ЦКТП - разбор файлов технологического журнала при помощи консоли bash. Я, в свою очередь,внёс изменения в данную методику. Мне хотелось достичь более понятного вида и сфокусироваться на Perl, в качестве предпочтительного средства обработки файлов ТЖ. Вот что из этого вышло:

30.10.2017    30141    MrWonder    42    

Анализ проблем производительности по динамике мониторинга RAS 1C

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

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

07.10.2020    3176    ivanov660    12    

Ускорение медленной работы строк в 1С на примере 1С:Документооборот КОРП

Производительность и оптимизация (HighLoad) v8 ДО Бесплатно (free)

Если у вас в 1С:Документооборот КОРП 2.1.11.5 (часть более старых и новых конфигураций): 1) Долго отправляется почта в формате HTML; 2) Медленно открывается документы внутренние / входящие / исходящие; 3) Тормозит область просмотра или открытие задач. Тогда вам сюда.

02.10.2020    3762    Nykyanen    16    

Тест скорости работы мобильной платформы 1С

Мобильная разработка Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

С помощью этого приложения вы можете измерить производительность своего устройства, используя для этого мобильную платформу 1С:Предприятие. Набор действий теста полностью повторяет аналогичный тест для стационарных ПК, поэтому результаты сравнимы.

14.09.2020    1191    capitan    19    

Долго открывается конфигуратор Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

В ОС Windows Server 2012 бывает полезно выключать службу Dynamic Fair Share Scheduling (DFSS позволяет балансировать и распределять ресурсы между пользователями), чтобы повысить производительность 1С:Предприятие 8 в ряде случаев.

22.04.2015    41306    Gilev.Vyacheslav    1    

Описание почти всех событий технологического журнала

Технологический журнал v8 Бесплатно (free)

Краткое описание событий технологического журнала с примерами. Все для быстрого старта.

19.08.2020    8630    YPermitin    30    

Адаптация автоматической классификации ошибок технологического журнала при появлении новых текстов и типов

Технологический журнал v8 1cv8.cf Бесплатно (free)

Корректируем классификацию ошибок ТЖ в процессе работы для конфигурации мониторинг производительности

17.08.2020    473    ivanov660    0    

SQL для 1С: пишем правильно, красиво, сложно

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Многие программисты боятся работать с Null, считая, что от этих данных в запросах нужно избавляться. О том, как с помощью Null-полей в запросе решать востребованные в учете задачи по выборке данных, на конференции Infostart Event 2019 Inception рассказал ведущий разработчик ГК WiseAdvice Дмитрий Дудин.

14.08.2020    10117    dmurk    30    

Как можно "положить" SQL сервер с помощью обычной консоли запросов 1С Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Описано как из 1С, с помощью безобидной на первый взгляд обработки, можно сделать неработоспособным SQL сервер. Предложены меры, позволяющие избежать этого.

22.01.2014    67647    yuraos    112    

Нестандартные блокировки при работе с OLAP-нагрузкой

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Если выполнение отчета мешает работе других пользователей и провоцирует блокировки, даже с учетом «грязного чтения» – ситуация кажется парадоксальной. О том, как расследовать такие проблемы, на конференции Infostart Event 2019 Inception рассказали ведущий программист торгового дома «Петрович» Станислав Щербаков и специалист по производительности компании «СофтПоинт» Александр Денисов.

20.07.2020    2012    Филин    7    

Автоматическая классификация ошибок технологического журнала

Технологический журнал v8 1cv8.cf Бесплатно (free)

В статье обсудим пример практической настройки конфигурации «Мониторинг производительности» для автоматической классификации ошибок по группам/кластерам на данных текстов описания ошибок. Используем механизм векторной модели текстов и косинусное сходство между ними.

25.06.2020    2894    ivanov660    12    

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

Обычно предметом оптимизации являются заранее определенные ключевые операции, т.е. действия, время выполнения которых значимо для пользователей. Причиной недостаточно быстрого выполнения ключевых операций может быть неоптимальный код, неоптимальные запросы либо же проблемы параллельности. Если выясняется, что основная доля времени выполнения ключевой операции приходится на запросы, то осуществляется оптимизация этих запросов. При высоких нагрузках на сервер СУБД в оптимизации нуждаются и те запросы, которые потребляют наибольшие ресурсы. Такие запросы не обязательно связаны с ключевыми операциями и заранее неизвестны. Но их также легко выявить и определить контекст их выполнения, чтобы оптимизировать стандартными методами.

24.05.2020    7795    DataReducer    22    

Ускоряем списание партий УПП 1.2 / 1.3 / УТ 10.3 Промо

Производительность и оптимизация (HighLoad) v8 УТ10 УПП1 Бесплатно (free)

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

21.06.2013    55598    Антон Ширяев    117    

[SQL Server] Использование trace flag 9592 для сжатия траффика в кластере AlwaysOn

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

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

18.05.2020    2203    Aleksey.Bochkov    4    

Эти занимательные временные таблицы

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 Бесплатно (free)

Кое-что интересное о временных таблицах и работе платформы 1С с ними.

06.04.2020    12281    YPermitin    0    

Оптимизация запросов 1С посредством индексации временных таблиц. Миф? Тестируем, смотрим, считаем

Производительность и оптимизация (HighLoad) Практика программирования v8 Бесплатно (free)

Появилось свободное время, решил проверить на работе индексацию таблиц. Решил поделиться с Вами результатами исследования. Давайте порассуждаем на эту тему? Часто ли вы пользуетесь индексацией в запросах? Платформа 8.3.16.1224

03.04.2020    4768    feva    15    

Сравнение скорости работы 1C+MSSQL и файлового варианта Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

На форумах постоянно задается один и тот же вопрос: почему 1C+MSSQL медленнее обрабатывает запросы чем файловая? Затем обычно идет «флуд» на несколько десятков страниц. Есть два популярных «течения» в таких форумах — одни говорят что для клиент-серверного варианта это нормально, файловый вариант всегда должен работать быстрее, другие говорят что 1С плохо работает с субд. В результате «баталий и выяснения отношений» на форумах люди расходятся при своих мнения.

19.02.2013    54926    Gilev.Vyacheslav    46    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    13506    informa1555    31    

Многострочный контекст событий

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

Разбор технологического журнала с группировкой событий по первой или последней строке многострочного контекста.

31.03.2020    3207    vasilev2015    9    

Анализ взаимоблокировок

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

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

20.03.2020    5361    vasilev2015    26    

Параллельные вычисления в 1С 8 Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Решение позволяет ускорять выполнение запросов в 1С 8 в отчетах путем их параллельного выполнения в разных потоках.

11.02.2013    30193    gallam99    19    

Многопоточность

Практика программирования Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Увеличиваем скорость загрузки данных в 20 раз. Как следует использовать многопоточность и готовый модуль для внедрения.

18.03.2020    7453    kaliuzhnyi    43    

Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах

Производительность и оптимизация (HighLoad) v8::Запросы Бесплатно (free)

Проблема быстродействия 1С напрямую зависит от производительности запросов. Но как понять механику работы СУБД с помощью плана запроса? Андрей Овсянкин и Никита Грызлов на конференции Infostart Event 2019 Inception подробно рассмотрели алгоритм работы с планом запроса СУБД PostgreSQL, полученным из технологического журнала, и рассказали, на что обратить внимание, чтобы оптимизировать работу системы.

17.02.2020    10235    Evil Beaver    13    

Ubuntu vs CentOS vs Win2k8 vs Debian: производительность PostgreSQL Промо

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Хотя интернет уже переполнен статьями о "правильной" настройке связки PostgreSQL и 1C 8.2, для подводных камней всегда остается место. При сравнении производительности СУБД PostgreSQL на разных ОС, показатели различаются в разы. Самую большую обиду принесла любимая Ubuntu (человечность). После долгих дней и ночей проведенных за консолью этой ОС, она разочаровала окончательно. Тормоза PostgreSQL в Ubuntu Server. Что с ними делать? Сколько раз можно наступать на грабли?

03.11.2012    43030    madmpro    32    

Оптимизатор запросов. Вторая часть

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Продолжение статьи об оптимизаторе запросов. Во второй части мы попробуем создать свой оптимизатор и попутно разберемся с такими вопросами, как: хранение файлов; индексы; статистика.

23.01.2020    6563    darkdan77    59    

Улучшаем производительность 1С. Рекомендации

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

Каждый уважаемый разработчик 1С сталкивался или столкнется с вопросом производительности высоконагруженных систем. В статье агрегирован основной набор рекомендаций, который позволит повысить производительность системы. Эти рекомендации должны быть просто must have по определению.

23.01.2020    8171    Kaval88    26    

Мониторим производительность с помощью 1С RAS

Инструментарий разработчика Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    12161    ivanov660    16    

Весёлые картинки о работе Performance Monitor на Windows Server 2016 Std по мотивам расследования потери производительности на базе 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Данная публикация посвящена одной особенности Performance Monitor на Windows Server 2016 Std. Как понимать графики Performance Monitor на Windows Server 2016 Std при расследовании проблем в работе 1С.

22.10.2019    7805    EugeneSemyonov    11    

Обслуживание баз данных. Не так просто, как кажется

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Бесплатно (free)

Считаете, что обслуживание индексов и статистик дело простое? Что ж, это не всегда так.

14.10.2019    18311    YPermitin    28    

Мониторинг высоконагруженной системы

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Высоконагруженной системе (более 8000 клиентских сессий) мониторинг необходим. Про опыт использования инструментов для мониторинга – самописной системы информирования, написанной на C#, и конфигурации «Центр контроля качества» в связке с системой отображения данных Grafana, на конференции Infostart Event 2018 Education рассказал Олег Репников.

13.09.2019    9212    Repich    5    

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux

Администрирование данных 1С Zabbix v8 Бесплатно (free)

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    19058    Sloth    24    

Хранение файлов - как уменьшить размер базы данных

Чистка базы Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Бесплатно (free)

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

09.09.2019    8756    2tvad    17    

Неочевидные проблемы производительности: важность системного подхода при анализе

Производительность и оптимизация (HighLoad) v8 Россия Бесплатно (free)

Часто программисты и 1С-ники сталкиваются с совершенно необъяснимыми на первый взгляд проблемами. Но это потому, что их внимание направлено только на один сегмент системы, а не на всю систему полностью. О том, почему нужно стараться смотреть на ситуацию комплексно, рассказал специалист по производительности компании SOFTPOINT Александр Денисов.

19.07.2019    9096    Филин    12    

Ловля блокировок на связке "Microsoft SQL server - 1С"

Производительность и оптимизация (HighLoad) v8 v8::blocking Бесплатно (free)

Материал относится к базам данных на связке «1С - MS SQL Server». Один из способов отлова блокировок в бд 1С . Переход к управляемым блокировкам через режим "Автоматический и управляемый".

16.07.2019    10287    fhqhelp    0    

Анти-оптимизация: как мы ускорили запрос в 4 раза, сделав его неоптимальным

Производительность и оптимизация (HighLoad) Практика программирования Решение задач на 1С:Специалист Разработка v8 Бесплатно (free)

В этой статье приведен пример неочевидной "оптимизации" запроса, которая противоречит всем правилам, описанным в книгах для подготовки к сертификации "1С:Эксперт по технологическим вопросам", а также преподаваемым на курсах подготовки экспертов.

02.07.2019    11573    igordynets    119    

Ускорение чтения правил обмена в УПП 1.3 в 20 раз!

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Способ оптимизации чтения правил обмена конвертации данных. Может понадобиться при большом размере правил и высокой периодичности обмена.

27.06.2019    9976    YPermitin    17    

Хотите снизить нагрузку на процессор сервера в 2 раза?

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

В статье рассмотрено влияние частого запуска регламентных заданий на процессор сервера 1С.

27.06.2019    9986    Дмитрий74Чел    6    

Непридуманные истории по оптимизации. История 1

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

Первая статья из планируемого цикла об оптимизации приложений на базе 1С. Без теории. Одна практика.

13.06.2019    12851    Repich    117    

Оптимизация: неэффективные запросы

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

В большинстве случаев основной причиной медленной работы системы при многопользовательском режиме работы является блокировка данных СУБД (говорим про клиент-серверную версию). Блокировка - это не есть хорошо или плохо, это жизненно необходимая вещь при построении прикладной логики работы системы. Но блокировки таблиц, записей могут быть как вполне законными, так и далеко не всегда оправданными в каждой конкретной ситуации. Одной из самых распространенных причин неоптимальной блокировки ресурсов является некорректное написание запросов.

13.06.2019    5984    slayer-ekb    10    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    26065    dmurk    146    

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    20191    ivanov660    10    

Не думать о секундах свысока...

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Несколько примеров оптимизации типовой конфигурации УТ11. Описанные приемы подходят для многих других конфигураций.

21.05.2019    8089    vasilev2015    21    

Альтернативная стратегия управления блокировками

Производительность и оптимизация (HighLoad) v8 v8::blocking 1cv8.cf Россия Бесплатно (free)

Данная публикация освещает одну из альтернативных стратегий блокирования данных на уровне MS SQL Server, которая недоступна средствами 1С, но может быть весьма полезной. Разбирается практический пример.

20.05.2019    7279    zhichkin    15    

Как работают управляемые блокировки

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

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

29.04.2019    24098    comol    198    

Странное потребление места на диске С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Решение проблемы постоянного роста папки %AppData%/Local/Temp.

26.04.2019    14360    kuzyara    13