Фроловичев Дмитрий

66
Рейтинг

Froloid
Дмитрий Фроловичев



  •   Регистрация: 14.03.2008 (16 лет назад)

  •   Был(а) на сайте: 17.04.2024

Подписчики 2

Группы

Профессиональный разработчик

Рейтинг 66

Параметрическая очистка регистров сведений

Инструменты и обработки Для всех Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) Чистка данных

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

1 стартмани

02.09.2009    27184    633    Froloid    28       

37

Оптимизированная консоль запросов

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) Инструментарий разработчика

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

1 стартмани

24.08.2009    24889    386    Froloid    19       

29

Комментарии

AdminМетаданные (Infostart Toolkit)#6 17.03.23 1:09
(5)
Да там в принципе нет нужного вида. Как найти в конфигураторе все подписки на интересующий тебя регистр сведений? В нормальной конфигурации аля ЕРП.

Я знаю одни - "Проще простого", их там вроде меньше 1000 бежим глазами все подряд и открываем свойства тех, наименование которых вызывает интерес.

А Вы какие способы ещё знаете?
AdminМетаданные (Infostart Toolkit)#3 16.03.23 21:00
(1)
Цитата
а в конфигураторе это все невидно?

Конечно нет. Вы видимо ни когда не пытались в конфигураторе посмотреть подписки на объект или в каком расширении метаданные, а то бы не задавали таких вопросов.
ПубликацииЧто на самом деле делает свойство «БлокироватьДляИзменения»#148 16.03.23 19:01
(147) А если ещё учесть, как чудовищно понизилась скорость проведения документов с "большими" табличными частями из-за гениального решения по "распределению запасов", то количество таймаутов возросло примерно в 10 раз. Но зато работы теперь - непочатый край. Есть где разгуляться экспертам по технологическим вопросам.
ПубликацииЧто на самом деле делает свойство «БлокироватьДляИзменения»#147 16.03.23 18:58
С необдуманным - всё понятно. Жаль только, что это со стороны разработчиков флагманского решения произошло и успешно продолжает жить.

Как привело к таймаутам - привело так, что ранее (в 2.4) управляемая блокировка устанавливалась по "таблице изменений", получаемых при сравнении исходных движений и новых. А "ДляИзменения" блокирует по всем данным набора. Из-за этого при тех же самых исходных - техническая конкурентность возросла.

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

И в итоге система работает по принципу - контроль остатков я произвожу по изменённым 3-м строкам, а блокирую все 100. Ведь "теперь не нужно вручную накладывать управляемую блокировку и это так здорово".
ПубликацииЧто на самом деле делает свойство «БлокироватьДляИзменения»#145 16.03.23 13:51
Данное свойство нужно использовать только если у вас низконагуженная или "тупая" база. А так - если у вас высоко нагруженная база и вы перешли с ерп 2.4 на 2.5, где начали использовать до свойство вместо явных управляемых блокировок (в моём случае 2.5.8 - возможно не всегда в 2.5 так было), то вам теперь нужно оперативно переписывать весь этот бред обратно на явные управляемые. А пока вы это делаете - виновато смотреть в глаза пользователям загибающимся от таймаутов привнесённых необдуманным использованием данного свойства.
ПубликацииПросмотр структуры базы в СУБД, в том числе расширений#17 02.01.23 2:18
У меня на КА 2.4 (платформа 8.3.21) она вывела только одну колонку с расширением (это правильно, есть только одно расширение меняющее данные), но при этом тьма строк "Цвет изменённых объектов Бледно-зелёный" без флага в колонке расширения. В фильтре по рассматриваемым объектам снят флаг "Не имеющие ни каких изменений".

Картинку прилагаю.

P.S. Ну и проблему со "СправочникИ", можно ведь и поправить за 2 года-то...

Прикрепленные файлы:

2023-01-02_2-32-30.png
HighLoadАнализ взаимоблокировок#39 29.07.22 3:20
(38) Что-то тут в тексте малость каша. То, что в сложных ситуациях причину таймаута сложновато найти - это Виктор верно сказал. Но вот предположения о причинах тут требуют уточнения:
Цитата
Но запись конкретно в этот блокируемый регистр занимает миллисекунды, и записано очень мало строк
- сама запись вероятно и быстро, но вот у наборов записей бывают подписки и там всё бывает не быстро. Но на самом деле это не важно, так как блокировка удерживается до конца транзакции;
Цитата
Похоже это всё обернуто дополнительной транзакцией длительных фоновых операций и задержку дает другой регистр
- тут 2 момента. 1 - каждое фоновое задание, это отдельный сеанс, он не может быть обёрнут в одну транзакцию ни с каким другим сеансом (как другим фоновым, так и в частности пользовательским из которого запустилось фоновое). 2
Цитата
и задержку дает другой регистр
в основном, задержку даёт не регистр, а исполняемый код, запросы и ожидания на блокировках;
Цитата
Получается надо шерстить по событиям всех регистров движений
- не знаю о каких событиях тут идёт речь, но если о TLOCK, то ни чего там по другим регистрам шерстить не надо.

В общем случае методика следующая:
1. Смотрим TTIMEOUT из него понимаем на какой таблице было ожидание, и какой connectID был виновником НАЧАЛА ожидания;
2. Смотрим по connectID виновника события SDBL фиксации или отмены транзакции, которая началось ранее или одновременно по отношению к нашему событию таймаута и закончилось позже начала нашего таймаута/тлока. И вот тут самое интересно что позже начала, а не позже окончания.

Тут-то и кроется основное расстройство для таких "анализаторов" как я. Я то ждал по молодости, что виновник удерживал блокировку все 20 секунд, но на практике часто тут получается цепочка ожиданий из которых в ТЖ виден только первый виновник. (Например, пытаемся заблокировать остатки по 2-м товарам и попадаем на ожидание от сеанса 1, который держит блокировку по первому товару 15 секунд. На 10-й секунде ещё сеанс 2 устанавливает блокировку по товару 2 тоже на 15 секунд.

В итоге мы видим таймаут в ТЖ, где виновник сеанс 1 и по sdbl понимаем, что он отпустил конфликтный ресурс ранее, чем мы словили таймаут). И чтобы найти других виновников необходимо вычислить по tlock'ам сеансы, которые блокировали конфликтный ресурс по пересекающемуся пространству не позже, чем завершилась транзакция сеанса 1. И в цепочке в общем случае может быть несколько таких виновников.

Чтобы это провернуть необходимо собирать в ТЖ как минимум все таймауты без ограничения по времени установки (так как виновник мог установить её мгновенно), а так же необходимо собирать поля блокировки для tlock'ов (эти 2 настройки могут приводить к очень большим файлам логов на нагруженных системах). Ну и ещё найти пересечение пространств у двух tlock'ов технически не так уж и просто (хотя если по этому пространству немного потенциальных виновников, то можно скинуть в один файл и найти глазами).
ПубликацииМеханизмы расчета резервов по товарам организаций#10 02.05.22 21:18
Где обещанное описание 2-го этапа расчёта?