Перейти к содержимому

1с захвачено субд в чем измеряется

  • автор:

1с захвачено субд в чем измеряется

Заметил неприятный баг у консоли запросов в инструментах разработчика (все равно спасибо автору). Если выполнить любой запрос, то начинает расти показатель захвачено СУБД.
Вроде, как и объекты не блокируются, но принято считать, что показатель захвачено субд отражает кто из пользователей больше грузит сервак (админы по нему выгоняют пользователей, чтобы дали другим работать).
Вопрос в том, что показывает показатель «захвачено субд», как интерпритировать его значения.

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

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

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

(3) возможно это не баг, а фича (удобняк же)

(0) Серьезно просаживало производительность.
Результат — запрет на использование не типовых консолей в боевых базах.

(5) все говорят, что происходит падение производительности, но за счет чего не могут объяснить. Понятно, если выполнение большего запроса, но если запрос выполнился и просто висит МВТ, то что на блокирует?
Какой ресурс забирает у сервера захвачено субд?

Пример, для моделирования

Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = новый МенеджерВременныхТаблиц;
Запрос.Текст =
«ВЫБРАТЬ ПЕРВЫЕ 1
| РеализацияТоваровУслуг.Ссылка
|ПОМЕСТИТЬ вт
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг»;

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;

мвт = Запрос.МенеджерВременныхТаблиц;
КонецПроцедуры

(6) Полгода назад интересовался. v8: Посоветуйте консоль запросов.
Потом забил. Т.к. действительно редко нужно что-то отлаживать на боевой базе.

Длительность захвата соединения с базой данных текущим сеансом с момента захвата по текущий момент. Отображается только если соединение с СУБД захвачено сеансом.
http://its.1c.ru/db/v83doc#bookmark:cs:TI000000173

Само по себе соединение не оказывает влияния на производительность.

(8) что значит захват соединения? Будто у сервера 10 соединения, а я 1 забрал и один пользователь не сможет подключиться

Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс

Особенности работы с хранилищем конфигурации

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

Принцип работы

Хранилище конфигурации представляет собой базу данных, в которой сохраняются все изменения конфигурации, сделанные в процессе её разработки. После подключения информационной базы к хранилищу из него в информационную базу загружается последняя версия конфигурации, и все объекты метаданных конфигурации становятся недоступными для редактирования.

Гранулой редактирования — объектами разработки — являются все основные объекты метаданных (такие как справочники, документы, регистры сведений), а также формы и макеты. Объекты разработки могут редактироваться независимо друг от друга разными пользователями. Реквизиты, табличные часть и т.д. не являются отдельными объектами с логической точки зрения, поэтому они не были включены в состав объектов разработки. Данные объекты метаданных редактируются в составе своих родительских объектов, являющихся объектами разработки.

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

  • захват объекта в хранилище;
  • помещение объекта в хранилище;
  • получение объекта из хранилища;
  • отмена захвата в хранилище.

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

Стоит обратить внимание на тот факт, что при подключении информационной базы к хранилищу конфигурации происходит полная замена текущей редактируемой конфигурации конфигурацией хранилища . Это необходимо для обеспечения полного соответствия идентификаторов объектов метаданных. Если все же имеется информационная база, часть объектов метаданных конфигурации которой необходимо перенести в конфигурацию хранилища, то необходимо:

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

Важно понимать, что предметом разработки является конфигурация, а не отдельные объекты. Хранилище ведет историю развития конфигурации. При помещении объектов разработки в хранилище создается новая версия конфигурации, для которой записываются: дата создания версии, пользователь, создавший версию, а также списки объектов разработки, которые были добавлены, изменены, удалены в процессе получения данной версии конфигурации. История объектов разработки не ведется. Несмотря на то, что имеется возможность просмотра истории объекта разработки, отдельно загрузить из хранилища объект разработки какой-либо версии конфигурации невозможно , возможна лишь загрузка из хранилища версии конфигурации целиком. Однако все же имеется возможность получения объекта определенной версии конфигурации: необходимо захватить объект и выполнить объединение с версией конфигурации, в которой данный объект имеет требуемое состояние.

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

В процессе разработки конфигурации с использованием хранилища рекомендуется периодически получать актуальное состояние объектов разработки. Это позволяет избежать возможных трудностей при помещении объектов в хранилище (например, при удалении объектов метаданных из конфигурации).

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

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

Режимы использования

Для работы с хранилищем конфигурации предусмотрено несколько способов:

  • с подключением информационной базы к хранилищу;
  • без подключения информационной базы к хранилищу.

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

Работа с подключением информационной базы к хранилищу

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

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

При подключении информационной базы к хранилищу в нем регистрируется строка соединения с информационной базой. Если при последующих соединениях с хранилищем данная строка будет изменена (по каким-либо причинам информационная база была перемещена на другой ресурс), то платформой будет выдано соответствующее предупреждение, и, в случае подтверждения соединения, строка соединения будет обновлена. Если соединение происходило копией информационной базы, то работа оригинала с данным хранилищем будет невозможна без предварительного отключения от него.

Работа без подключения информационной базы к хранилищу

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

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

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

  1. Создать новую информационную базу.
  2. Открыть хранилище конфигурации.
  3. Из хранилища конфигурации загрузить конфигурацию нужной версии.
  4. Заполнить информационную базу необходимыми данными.
  5. Подготовить дистрибутив конфигурации.
  6. В процессе модернизации конфигурации хранилища для выпуска новых дистрибутивов необходимо повторить процедуру, начиная с пункта 2, и, если новых данных вводить не требуется, сразу выполнить подготовку дистрибутива.

Режим совместимости хранилища конфигурации

Начиная с версии платформы 8.3.3, в хранилище добавлен режим совместимости. Режим совместимости позволяет старшим версиям платформы работать с хранилищами, созданными в младших версиях платформы (начиная с версии 8.3.2), без конвертации.

Режим совместимости можно установить в окне «Администрирование хранилища» на закладке «Прочие». На данный момент можно установить один из двух режимов совместимости: » Версия 8.3.2 » и » Не использовать «. При смене режима и нажатии кнопки «Установить» происходит конвертация базы данных хранилища конфигурации.

Особенности работы хранилища в режиме совместимости » Версия 8.3.2 «:

  • осуществляется строгий контроль ссылочной целостности при получении/помещении объектов;
  • объекты метаданных хранятся в базе данных хранилища;
  • режим устанавливается по умолчанию для существующих хранилищ конфигураций.

Особенности работы хранилища в режиме совместимости » Не использовать «:

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

Контроль ссылочной целостности

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

Пример : удаление справочника Склады из демонстрационной конфигурации » Примеры ИТС «:


    происходит проверка имеющихся на этот объект ссылок в других объектах: Копировать в буфер обмена

"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип Документ.РасходнаяНакладная.Реквизит.Склад.Тип РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип

В режиме совместимости » Версия 8.3.2 » хранилище конфигурации обеспечивает более строгий контроль ссылочной целостности конфигурации. Производится полный контроль ссылок между объектами метаданных как на уровне самих объектов, так и на уровне содержимого их форм и макетов, а также содержимого интерфейсов.

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

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

Анализ ссылок производится рекурсивно: сначала производится анализ объекта, с которым производится действие в хранилище; затем при обнаружении необходимости выполнения операции над дополнительными объектами аналогичный анализ производится для них, и так до тех пор, пока ссылки всех требуемых объектов не будут проанализированы.

Особенности конфигурирования

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

Как уже говорилось ранее, для получения возможности редактирования объекта необходимо произвести его захват в хранилище конфигурации. Если необходимо внести изменения в объект метаданных, не являющийся объектом разработки (реквизиты, табличные части), то необходимо произвести захват того объекта разработки, который содержит данные объекты метаданных.

Для добавления нового объекта метаданных или же для изменения порядка следования существующих объектов необходимо произвести захват родительского объекта разработки.

Удаление объектов конфигурации

Особое внимание стоит уделить процедуре удаления объектов метаданных из конфигурации. Для удаления объекта метаданных из конфигурации необходимо захватить в хранилище сам удаляемый объект, его родительский объект, а также все подчиненные объекты удаляемого. После чего появится возможность удалить объект из конфигурации.

Однако при помещении в хранилище, если на удаленный объект имеются ссылки в других объектах, средства работы с хранилищем потребуют помещение этих объектов в хранилище с очищенными ссылками на удаленный объект.

Рекомендуется перед удалением объекта из конфигурации производить поиск ссылок на данный объект. Произвести захват в хранилище всех обнаруженных объектов и вычистить из них все ссылки на удаляемый объект.

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

В режиме совместимости » Не использовать » удалять ссылки на удаляемый объект из форм, интерфейсов и макетов не требуется.

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

Пример: удаление справочника Склады из демонстрационной конфигурации » Примеры ИТС » в режиме совместимости хранилища » Версия 8.3.2 «:


    Производим поиск ссылок на удаляемый объект: Копировать в буфер обмена

"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип Документ.РасходнаяНакладная.Реквизит.Склад.Тип РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип

После нажатия кнопки OK в окне сообщений будет выведена следующая информация: Копировать в буфер обмена

Ошибка помещения объектов в хранилище. Для выполнения операции необходимо поместить в хранилище объекты: - Документ.ПриходнаяНакладная.Форма.ФормаДокумента (объект не захвачен пользователем) - Документ.РасходнаяНакладная.Форма.ФормаДокумента (объект не захвачен пользователем)

При этом в окне сообщений будет выведена следующая информация: Копировать в буфер обмена

Операция не может быть выполнена: Объект 'Документ.ПриходнаяНакладная.Форма.ФормаДокумента' содержит ссылки на удаленные объекты: - Справочник.Склады Объект 'Документ.РасходнаяНакладная.Форма.ФормаДокумента' содержит ссылки на удаленные объекты: - Справочник.Склады

После утвердительного ответа на предложение об очистке от некорректных ссылок будет выполнена процедура очистки, сохранена конфигурация и вновь произведена попытка помещения объектов в хранилище:

После нажатия кнопки OK в окне сообщений будет выведена следующая информация: Копировать в буфер обмена

Объект помещен в хранилище: ПримерыИТС Объект помещен в хранилище: Документ.ПриходнаяНакладная.Форма.ФормаДокумента Объект помещен в хранилище: Документ.ПриходнаяНакладная Объект помещен в хранилище: Документ.РасходнаяНакладная.Форма.ФормаДокумента Объект помещен в хранилище: РегистрНакопления.УчетНоменклатуры Объект помещен в хранилище: Интерфейс.Основной Объект помещен в хранилище: Документ.РасходнаяНакладная

Пример: удаление справочника Склады из демонстрационной конфигурации » Примеры ИТС » в режиме совместимости хранилища » Не использовать «:


    Производим поиск ссылок на удаляемый объект:Копировать в буфер обмена

"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип Документ.РасходнаяНакладная.Реквизит.Склад.Тип РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип

После нажатия кнопки OK в окне сообщений будет выведена следующая информация:Копировать в буфер обмена

Объект помещен в хранилище: ПримерыИТС Объект помещен в хранилище: Документ.ПриходнаяНакладная Объект помещен в хранилище: РегистрНакопления.УчетНоменклатуры Объект помещен в хранилище: Документ.РасходнаяНакладная

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

Оптимизация хранения данных в хранилище конфигурации

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

Большое количество файлов может несколько замедлять работу с хранилищем (особенно при расположении хранилища на сетевом диске). Поэтому, если стало заметно некоторое замедление работы с хранилищем, в окне «Администрирование хранилища» на закладке «Прочие» можно выполнить оптимизацию хранения данных хранилища.

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

Программирование в 1с

Вопрос 6.1. Документ РеализацияТоваров осуществляет движения по регистру ОстаткиНаСкладах, а именно списывает реализованное количество товаров со склада. В обработчике проведения документа выполняется проверка превышения лимитов — минимального допустимого остатка товара на складе и максимально допустимого размера отгрузки со склада. Запрос выглядит следующим образом:

Ответ:

Запрос.Текст font-family: Verdana, sans-serif; font-size: x-small;»>| ДЛЯ ИЗМЕНЕНИЯ»;

1) После ДЛЯ ИЗМЕНЕНИЯ не указаны таблицы. В случае если после предложения ДЛЯ ИЗМЕНЕНИЯ отсутствуют имена таблиц, блокироваться будут данные из всех таблиц, задействованных в запросе. Что приведет к избыточным блокировкам.

Следует блокировать для изменения только таблицу остатков товара.
2) Проверку лимитов нужно делать в самом запросе.
3) Подзапрос следует заменить на ВТ.

Вопрос 6.2. Имеется реально работающая многопользовательская система. Необходимо решить следующие задачи:

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

В колонке «заблокировано упр.» отображается номер сеанса которым заблокирован текущий сеанс. Номер сеанса можно увидеть и

через монитор активности.

Вопрос 6.3. В метаданных конфигурации описан регистр накопления (остатков) ОстаткиНаСкладах, имеющий измерения «Склад» и «Товар». Информационная база работает в режиме клиент-сервер с использованием СУБД PostgreSQL.

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

Программирование в 1с

В конфигурации определены следующие объекты метаданных:
Справочник «Контрагенты». Структура:
ДоговорСКонтрагентом (тип Документы.ДоговораСКонтрагентами.Ссылка)
ДоговорАннулирован (тип Булево)
ФотокопияДоговора (тип ХранилищеЗначений)
Регистр накопления «ВзаиморасчетыСКонтрагентом». Структура:
Сделка (составной тип из 28 видов документов).

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

Запрос = Новый Запрос;
Запрос.Текст ;

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сделка = Выборка.Сделка;
Контрагент = Сделка.Контрагент;
Если (Контрагент.ДоговорАнулирован) Тогда
Сообщить(«Договор с » + Контрагент.Наименование + » анулирован!»);
КонецЕсли;

КонецЦикла;
1) Т ак как поле «Сделка» составного типа, то нужно использовать функцию «Выразить».

2) В запросе отбираются лишние данные, нужно отбирать в запросе сразу задать условие где «ДоговорАнулирован = Истина».

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

Вопрос 11.2

Что такое блокировка и для чего она нужна? Кто и когда устанавливает блокировку? Кто и когда снимает блокировку? Что такое ожидание на блокировке и когда оно происходит.

1) Что такое блокировка и для чего она нужна? Блокировка это информация о том, что некоторый ресурс заблокирован.

2) Кто и когда устанавливает блокировку? Блокировка устанавливается явно и неявно.
Явно устанавливает разработчик с помощью конструктора встроенного языка Новый БлокировкаДанных.

Неявно блокировка устанавливается платформой при записи(удалении) объектов, в обработке проведения и др.

3) Ожидание на блокировке это ситуация когда транзакция не может установить свою блокировку так как ресурс уже заблокирован другой транзакцией.

Вопрос 11.3

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

1)Если даже в однопользовательском режиме операция выполняется медленно значит есть неоптимальные запросы.

С помощью замера производительности в отладчике определить самые «тяжелые» запросы и их оптимизировать.

2) «Разгрузить» обработку проведения. Возможно некоторую часть функционала можно вынести из обработки проведения и вызывать их отдельными командами.

1С: Эксперт. Решение билета №10.

Вопрос 10.1

Регистр накопления имеет следующую структуру: Измерения: Склад Ресурсы: Товар , Остаток Документ имеет следующую структуру: Реквизиты: Организация , Контрагент Табличная часть «Товары»: Товар , Склад , Количество Документ проводится по регистру и реквизиты табличной части переносятся в измерения и ресурсы регистра по следующей схеме:

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

Если да, то оптимальна ли такая структура? Скорее всего нет, так как обычно склад один и то же поэтому его следует перенести в шапку.

Вопрос 10.2. Что такое уровень изоляции. Какие УИ поддерживает 1С Предпритие 8. Чем они отличаются с практической точки зрения?

Как говорит википедия » Уровень изолированности транзакций — значение, определяющее уровень, при котором в транзакции допускаются несогласованные данные, то есть степень изолированности одной транзакции от другой. Более высокий уровень изолированности повышает точность данных, но при этом может снижаться количество параллельно выполняемых транзакций. С другой стороны, более низкий уровень изолированности позволяет выполнять больше параллельных транзакций, но снижает точность данных.»

В 1С поддерживаются следующие уровни изоляции:

  • Read uncommitted
  • Read committed
  • READ COMMITTED SNAPSHOT
  • Repeatable read
  • Serializable

Вопрос 10.3

В результате анализа проблемы взаимоблокировки в реально работающей системе на платформе 1с 8 была обнаружена ее причина: Запрос в транзакции без опции «Для изменения» и затем запись прочитанных данных. Почему в этом случае возникает взаимоблокировка? Как и почему изменится ситуация, если использовать опцию «для изменения».

Причина описанной взаимоблокировки называется «повышение уровня изоляции транзакции». В автоматическом режиме при чтении запросом без опции «для изменения» устанавливается S блокировка до конца транзакции.

При записи данных устанавливается X блокировка также до конца транзакции.

Если 2 параллельные транзакции выполняют эти действия параллельно, то возможна следующая ситуация: Обе смогут выполнить запрос, так как S блокировки совместимы. Дальше первая транзакция не сможет наложить свою X блокировку так как на ресурс наложена S блокировка второй транзакции, и вторая транзакция не сможет наложить свою X блокировку так как на ресурс наложена S блокировка первой транзакции, что и приведет к дедлоку.

Если же запрос выполнять с опцией «для изменения», то будет наложена U блокировка, а U блокировки между собой не совместимы и одна из транзакций станет в очередь и будет дожидаться завершения первой транзакции .

среда, 28 октября 2015 г.

1С: Эксперт. Решение билета №9

Вопрос 09.1

В конфигурации определен регистр накопления «ОстаткиТоваровНаСкладах», который имеет следующий набор измерений:

Измерения регистра не проиндексированы.
Пользователь А выполняет в транзакции запрос следующего вида:
Запрос.Текст = “ВЫБРАТЬ
| Остатки.Склад КАК Склад,
| Остатки.Товар КАК Товар,
| Остатки. КоличествоОстаток КАК Остаток
| РегистрНакопления.ТоварыНаСкладах.Остатки(,Товар=&Товар) КАК Остатки”;
Запрос.УстановитьПараметр(“Товар”, Справочники.Товары.НайтиПоКоду(“00001”));
Пользователь Б выполняет в запись следующего набора записей регистра ТоварыНаСкладах:
ОсновнойСклад
Телевизор SHARP
ОптовыйСклад
Телевизор SHARP

Смогут ли два этих действия выполнится параллельно? Обоснуйте свой ответ. Как измениться ситуация, если Пользователь А укажет условие по складу «Резервный склад». Почему?

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

Соответственно вторая транзакция не сможет наложить свою X блокировку при записи.

Если Пользователь А укажет условие по складу «Резервный склад» то сможет использоваться поиск по кластерному индексу при выполнении запроса и транзакции смогут выполнится параллельно.

Вопрос 09.2
Код конфигурации содержит следующий фрагмент:
НачатьТранзакцию();
Процедура1();
НачатьТранзакцию();
Процедура2();
НачатьТранзакцию();
Процедура3();
ОтменитьТранзакцию();
Какие действия будут отменены в результате выполнения функции ОтменитьТранзакцию() в 7 строке.
Будут отменены все действия, так как вложенные транзакции не поддерживаются.
Вопрос 09.3

Для работы системы используется сетевой ключ на 50 пользователей, который установлен на сервере предприятия. Во время работы системы у различных пользователей периодически возникает ошибка «Не обнаружен ключ защиты программы». Укажите возможные причины возникновения ошибки и предложите способы их устранения.

1) Скорее всего сервер не успевает выдавать лицензии, поэтому требуется настроить файл nethasp.ini.

2) Проверить используемый протокол. Если используется ipv6, то следует перейти на протокол ipv4 так как HASP License Manager работает только с IPv4.

3) Установка HASP License Manager на терминальный сервер
4) Возможно сам ключ поврежден.

Как установить заголовок приложения(системы)

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

Функция ПолучитьСиноним() Экспорт;
ТекСиноним = Метаданные.Синоним;
Возврат ТекСиноним;
КонецФункции

2) В модуле управляемого приложения вставляем код
Процедура ПриНачалеРаботыСистемы()
ТекЗаголовок = «learning1c.blogspot.com » ;
ТекСиноним= ОбщийМодуль1.ПолучитьСиноним();
НовЗаголовок = ТекЗаголовок+ТекСиноним+ИмяПользователя() ;
УстановитьЗаголовокКлиентскогоПриложения(НовЗаголовок);
КонецПроцедуры

3) Устанавливаем сам заголовок в свойствах конфигурации.

Получаем требуемую картину

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *