четверг, 29 октября 2015 г.

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 блокировки между собой не совместимы и одна из транзакций станет в очередь и будет дожидаться завершения первой транзакции .

Комментариев нет:

Отправить комментарий