«1С:Профессионал» по технологическим вопросам (Раздел 8)

Транзакции

Вопрос 8.1
Информационная клиент-серверная система на платформе 1С:8.3 работает в управляемом режиме блокировок данных с включенным режимом совместимости с 8.2. Какие уровни изоляции транзакций при этом будут использоваться в СУБД MS SQL Server?

1. Read Uncommitted, Read Сommitted Snapshot, Read Committed, Repeatable Read, Serializable
2. Read Uncommitted, Read Committed, Repeatable Read, Serializable
3. Read Uncommitted, Read Сommitted
4. Read Uncommitted, Read Сommitted Snapshot
5. Read Uncommitted, Repeatable Read, Serializable
6. Read Uncommitted, Read Сommitted Snapshot, Snapshot, Read Committed, Repeatable Read, Serializable

Для платформы 8.2 в управляемом режиме блокировок в транзакциях используются уровни изоляции Read Сommitted, при чтении вне транзакций Read Uncommitted.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.41

Вопрос 8.2
Информационная клиент-серверная система на платформе 1С:8.3 работает в управляемом режиме блокировок данных без режима совместимости с 8.2. Какие уровни изоляции транзакций при этом будут использоваться в СУБД MS SQL?

1. Read Uncommitted, Read Сommitted Snapshot, Read Сommitted, Repeatable Read, Serializable
2. Read Uncommitted, Read Сommitted, Repeatable Read, Serializable
3. Read Uncommitted, Read Сommitted Snapshot
4. Read Сommitted Snapshot
5. Read Uncommitted, Repeatable Read, Serializable
6. Read Uncommitted, Read Сommitted Snapshot, Snapshot, Read Сommitted, Repeatable Read, Serializable

Для платформы 8.3 при использовании в качестве СУБД MS SQL 2005 и выше используется уровень изоляции Read Сommitted Snapshot (как в транзакции, так и вне транзакции).

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.41

Вопрос 8.3
Информационная клиент-серверная система на платформе 1С:8.3 работает в автоматическом режиме блокировок данных со снятым режимом совместимости. Какие уровни изоляции транзакций при этом будут использоваться в СУБД MS SQL Sever?

1. Read Uncommitted, Read Сommitted Snapshot, Read Сommitted, Repeatable Read, Serializable
2. Read Uncommitted, Read Сommitted, Repeatable Read, Serializable
3. Read Uncommitted, Read Сommitted
4. Read Uncommitted, Read Сommitted Snapshot
5. Read Uncommitted, Repeatable Read, Serializable
6. Read Uncommitted, Read Сommitted Snapshot, Snapshot, Read Сommitted, Repeatable Read, Serializable

И для 8.2 и для 8.3 в автоматическом режиме управления блокировок используются уровни изоляции Repeatable Read и Serializable, при чтении вне транзакции Read Uncommitted.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.41

Вопрос 8.4
Информационная клиент-серверная система на платформе 1С:8.3 работает в автоматическом режиме блокировок данных. Какие уровни изоляции транзакций при этом будут использоваться в СУБД MS SQL Server для операций записи?

1. Read Uncommitted для ссылочных данных и Read Сommitted для остальных.
2. Read Сommitted для всех данных.
3. Repeatable Read для ссылочных типов данных и Serializable для остальных.
4. Serializable для всех данных.

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

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.41

Вопрос 8.5
WAL применительно к транзакциям это:

1. протокол журнализации (и управления буферизацией) Write Ahead Log (WAL) — «пиши сначала в журнал».
2. протокол журнализации (и управления буферизацией) Write Another Log (WAL) — «пиши другой журнал».
3. аббревиатура, расшифровывающаяся как перечень основных свойств транзакции.

WAL — Write Ahead Log, опережающий лог действий с таблицами и индексами. Основная задача — целостность и отказоустойчивость базы данных при одновременном росте производительности.

Вопрос 8.6
Протокол WAL имеет следующий смысл:

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

 

Вопрос 8.7
Что такое транзакция?

1. Под транзакцией понимается неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации) такая, что либо результаты всех операторов, входящих в транзакцию, отображаются в БД, либо воздействие всех этих операторов полностью отсутствует.
2. Транзакция вообще это минимальная логически осмысленная операция, которая имеет смысл и может быть совершена только полностью.
3. Транзакция в информатике это группа логически объединенных последовательных операций по работе с данными, обрабатываемая или отменяемая только неделимыми фрагментами. То есть все изменения данных, вносимые фрагментом транзакции, должны быть либо зафиксированы (COMMIT), либо отменены (ROLLBACK).
4. Верны ответы 1 и 2

Транзакция — это неделимая, с точки зрения воздействия на базу данных, последовательность операций манипулирования данными, выполняющаяся по принципу «все или ничего», и переводящая базу данных из одного целостного состояния в другое целостное состояние. Если по каким-либо причинам одно из действий транзакции невыполнимо или произошло какое-либо нарушение работы системы, база данных возвращается в то состояние, которое было до начала транзакции (происходит откат транзакции).

Транза́кция (англ. transaction, от лат. transactio — соглашение, договор) — минимальная логически осмысленная операция, которая имеет смысл и может быть совершена только полностью.

Источники:
ИТС: Блокировки данных в 1С:Предприятии 8
Wikipedia: Транзакция

Вопрос 8.8
UNDO логи хранят:

1. последовательность действий для отката транзакции.
2. список неиспользованных данных.
3. старые версии данных.

 

Вопрос 8.9
Consistency (Согласованность) в ACID

1. гарантирует, что никакая транзакция не будет зафиксирована в системе частично
2. является необходимым условием для обеспечения надежности
3. обеспечивает отсутствие влияние на результат другими транзакциями
4. обозначает, что изменения, сделанные успешно завершенной транзакцией, останутся сохраненными после восстановления системы

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

Источники:
MSDN: Транзакции

Вопрос 8.10
REDO логи хранят:

1. последовательность действий транзакции, чтобы при необходимости ее повторить.
2. новые версии данных.
3. список использованных данных.

 

Вопрос 8.11
Atomicity (Атомарность) в ACID

1. гарантирует, что никакая транзакция не будет зафиксирована в системе частично
2. является необходимым условием для обеспечения надежности
3. обеспечивает отсутствие влияние на результат другими транзакциями
4. обозначает, что изменения, сделанные успешно завершенной транзакцией, останутся сохраненными после восстановления системы

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

Источники:
MSDN: Транзакции

Вопрос 8.12
Уровень изоляции транзакции это:

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

То, насколько транзакции изолированы друг от друга (обратно – то, насколько в них допускаются несогласованные данные), называется уровнем изоляции транзакций.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.13
Код на встроенном языке содержит одну транзакцию, вложенную в другую. Какие действия будут отменены в результате выполнения ОтменитьТранзакцию() в коде вложенной транзакции?

1. Т.к. вложенные транзакции технологическая платформа не поддерживает, то в начале вложенной транзакции возникнет ошибка
2. Только вложенная транзакция. ОтменитьТранзакцию() во внешней транзакции нужно выполнить отдельно
3. Только внешняя транзакция. ОтменитьТранзакцию() во вложенных транзакциях не работает, т.к. они не поддерживаются
4. Будут отменены и вложенная, и внешняя транзакция.

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

Источники:
ИТС: Вложенность транзакций

Вопрос 8.14
Используется ли при работе с 1С уровень изоляции Repeatable Read?

1. Использовался только до версии 8.3.
2. Используется в автоматическом режиме управления блокировками.
3. Не используется.
4. Используется в управляемом режиме управления блокировками.

Repeatable Read используется только в автоматическом режиме управления блокировками. Независимо от версии платформы.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.41

Вопрос 8.15
База работает в управляемом режиме управления блокировками, используется СУБД MS SQL Server 2012, платформа 8.3 без режима совместимости, все настройки соответствуют настройкам по умолчанию. В одной из транзакций произошла эскалация блокировок СУБД на регистре бухгалтерии «Хозрасчетный». Другая транзакция пытается прочитать данные из этого регистра. Что произойдет?

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

 

Вопрос 8.16
База работает в управляемом режиме управления блокировками, используется СУБД MS SQL Server, платформа 8.2 без режима совместимости, все настройки соответствуют настройкам по умолчанию. В одной из транзакций произошла эскалация блокировок СУБД на регистре бухгалтерии «Хозрасчетный». Другая транзакция пытается прочитать данные из этого регистра. Что произойдет?

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

 

Вопрос 8.17
RCSI для MS SQL Server это:

1. инструмент разработчика.
2. уровень изоляции транзакции.
3. недокументированная возможность.

RCSI — Read Committed Snapshot Isolation

Вопрос 8.18
Куда записывается снимок при использовании Read Committed Snapshot для MS SQL Server?

1. В оперативную память сервера СУБД.
2. В журнал транзакций.
3. В базу tempdb.
4. В UNDO-лог.

 

Вопрос 8.19
Какие проблемы решает уровень изоляции Read Committed?

1. Повторяемого чтения.
2. Неповторяемого чтения.
3. «Грязного» чтения.
4. Только проблему фантомов.

Read Committed — подтвержденное чтение, изоляция зафиксированного чтения. «Грязные» чтения невозможны, возможны неповторяемые чтения и фантомы.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.39

Вопрос 8.20
Какие проблемы решает, а какие не решает уровень изоляции Read Uncommitted?

1. Возможны «грязные», неповторяемые чтения и фантомы.
2. «Грязные» чтения невозможны, возможны неповторяемые чтения и фантомы.
3. «Грязные» и неповторяемые чтения невозможны. Возможны фантомы.
4. «Грязные» и неповторяемые чтения, а также фантомы невозможны.

Read Uncommitted — неподтвержденное чтение, изоляция незафиксированного чтения. Возможны «грязные», неповторяемые чтения и фантомы.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.21
Какие проблемы решает, а какие не решает уровень изоляции Read Committed Snapshot?

1. Возможны «грязные», неповторяемые чтения и фантомы.
2. «Грязные» чтения невозможны, возможны неповторяемые чтения и фантомы.
3. «Грязные» и неповторяемые чтения невозможны. Возможны фантомы.
4. «Грязные» и неповторяемые чтения, а также фантомы невозможны.

Read Committed Snapshot — подтвержденное чтение с включенным параметром READ_COMMITTED_SNAPSHOT). «Грязные» чтения невозможны, возможны неповторяемые чтения и фантомы.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.22
Какие проблемы решает, а какие не решает уровень изоляции Repeatable Read?

1. Возможны «грязные», неповторяемые чтения и фантомы.
2. «Грязные» чтения невозможны, возможны неповторяемые чтения и фантомы.
3. «Грязные» и неповторяемые чтения невозможны. Возможны фантомы.
4. «Грязные» и неповторяемые чтения, а также фантомы невозможны.

 

Вопрос 8.23
Используется ли технологической платформой уровень изоляции Snapshot?

1. Да, в автоматическом режиме управления блокировками.
2. Да, начиная с 8.3.
3. Нет.
4. Использовался только в 8.0

Snapshot (изоляция моментального снимка), отдельный уровень изоляции начиная с SQL Server 2005. В «1С» не поддерживается. «Грязные» и неповторяемые чтения невозможны. Фантомы невозможны.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.39

Вопрос 8.24
Какие проблемы решает, а какие не решает уровень изоляции Serializable?

1. Возможны «грязные», неповторяемые чтения и фантомы.
2. «Грязные» чтения невозможны, возможны неповторяемые чтения и фантомы.
3. «Грязные» и неповторяемые чтения невозможны. Возможны фантомы.
4. «Грязные» и неповторяемые чтения, а также фантомы невозможны.

Serializable (упорядоченный, изоляция упорядочиваемых транзакций, сериализуемый, упорядоченные транзакции, сериализуемые транзакции). «Грязные» и неповторяемые чтения, а также фантомы невозможны.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.40

Вопрос 8.25
Что такое проблема потерянного обновления?

1. Если один и тот же блок данных одновременно изменяют две разные транзакции, то будет зафиксировано только одно изменение, второе потеряется.
2. Если один и тот же блок данных одновременно изменяют две разные транзакции, то будут зафиксированы оба изменения.
3. Если один и тот же блок данных последовательно изменяют две разные транзакции, то будет зафиксировано только одно изменение, второе потеряется.
4. Если один и тот же блок данных последовательно изменяют две разные транзакции, то будут зафиксированы оба изменения.

Потерянное обновление (англ. lost update) – если один и тот же блок данных одновременно изменяют две разные транзакции, то будет зафиксировано только одно изменение, второе потеряется (при работе «1С» невозможно, поскольку в «1С» не бывает записи вне транзакции).

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.26
Что такое проблема «грязного» чтения?

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

«Грязное» чтение (англ. dirty read) – чтение данных, добавленных или измененных транзакцией, может дать неточный результат, потому что та транзакция впоследствии не подтвердится (откатится).

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.27
Что такое проблема неповторяющегося чтения?

1. При повторном чтении в рамках одной и той же транзакции оказывается, что ранее прочитанные данные изменены или удалены.
2. Чтение данных, добавленных или измененных транзакцией, в другой транзакции может дать не точный результат, потому что та транзакция может поменять их еще раз.
3. Чтение данных, добавленных или измененных транзакцией, может дать не точный результат, потому что та транзакция впоследствии не подтвердится (откатится).
4. При повторном чтении в рамках одной и той же транзакции оказывается, что прочитаны строки, которых при предыдущих чтениях не было.
5. Верны ответы 1 и 4.

Неповторяющееся чтение (англ. non-repeatable read) – при повторном чтении в рамках одной и той же транзакции оказывается, что ранее прочитанные данные изменены или удалены.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.28
Что такое проблема чтения фантомов?

1. При повторном чтении в рамках одной и той же транзакции оказывается, что ранее прочитанные данные изменены или удалены.
2. Чтение данных, добавленных или измененных транзакцией, в другой транзакции может дать не точный результат, потому что та транзакция может поменять их еще раз.
3. Чтение данных, добавленных или измененных транзакцией, может дать не точный результат, потому что та транзакция впоследствии не подтвердится (откатится).
4. При повторном чтении в рамках одной и той же транзакции оказывается, что прочитаны строки, которых при предыдущих чтениях не было.
5. Верны ответы 1 и 4.

Фантомное чтение (англ. phantom reads) – при повторном чтении в рамках одной и той же транзакции оказывается, что прочитаны строки, которых при предыдущих чтениях не было (новые строки называют «фантомными»).

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.38

Вопрос 8.29
Как определить, что используется именно автоматический режим управления блокировками?

1. В трассировке SQL Server Profiler есть события Lock:Escalation
2. Ни один из перечисленных способов не подходит
3. В трассировке SQL Server Profiler есть события Lock:Timeout (timeout >0)
4. В трассировке SQL Server Profiler для событий категории Lock в столбце Mode встречаются записи со словом Range
5. В трассировке SQL Server Profiler для событий категории Lock в столбце Mode указано Serializable или Repeatable Read
6. Посмотреть свойство конфигурации «Режим управления блокировкой данных»

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

Вопрос 8.30
Как определить, что используется именно автоматический режим управления блокировками?

1. В тексте запроса, пришедшем на SQL Server, есть подстрока WITH SERIALIZABLE.
2. В тексте запроса, пришедшем на SQL Server, есть подстрока WITH REPEATABLE READ.
3. В тексте запроса, пришедшем на SQL Server, есть подстрока WITH AUTOLEVEL.
4. Верны ответы 1 и 2.

Уровни изоляции Repeatable read и Serializable используются только в автоматическом режиме управления блокировками (для MS SQL).

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.41

Вопрос 8.31
ACID применительно к транзакциям это:

1. акроним, описывающий требования к транзакционной системе: Атомарность, Согласованность, Изолированность, Надежность.
2. акроним, описывающий требования к транзакционной системе: Атомарность, Консистентность, Изолированность, Устойчивость.
3. верны ответы 1 и 2.
4. термин к транзакциям не применяется.

Транзакция является последовательностью операций, выполненных как одна логическая единица работы. Логическая единица работы должна обладать четырьмя свойствами, называемыми атомарностью, согласованностью, изоляцией и длительностью (ACID), чтобы называться транзакцией.

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

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

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

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

Источники:
MSDN: Транзакции

 

Вопрос 8.32
Атомарность применительно к транзакциям это:

1. все или ничего; транзакция должна или пройти или не пройти полностью.
2. что бы ни случилось, будут выполнены все подоперации транзакции.
3. если транзакцию не удаётся полностью завершить, результаты всех её до сих пор произведённых действий не будут отменены и система не вернётся в исходное состояние.

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

Источники:
MSDN: Транзакции

Вопрос 8.33
Какой из ответов правильно описывает свойство согласованности (Consistency) применительно к транзакциям?

1. Каждая успешная транзакция по определению фиксирует только допустимые результаты, не нарушает бизнес-логику и отношения между элементами данных.
2. Внутри транзакции в ходе ее выполнения требуется согласованность.
3. Если транзакцию не удаётся полностью завершить, результаты всех её до сих пор произведённых действий будут отменены и система вернётся в исходное состояние.

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

Источники:
MSDN: Транзакции

Вопрос 8.34
Изолированность транзакции — это:

1. действия других пользователей не должны мешать мне работать
2. обеспечение целостности данных независимо от действий других пользователей
3. свойство, которое соблюдается для уровня изоляции Read Committed и выше

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

Источники:
MSDN: Транзакции

Вопрос 8.35
Устойчивость (Durability) применительно к транзакции это:

1. действия других пользователей не должны повлиять на мои результаты.
2. если транзакцию не удаётся полностью завершить, результаты всех её до сих пор произведённых действий будут отменены и система вернётся в исходное состояние.
3. после своего завершения она сохраняется в системе, которую ничто не может вернуть в исходное (до начала транзакции) состояние.

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

Источники:
MSDN: Транзакции

Вопрос 8.36
Как связаны блокировки и транзакции?

1. Транзакции в обязательном порядке устанавливают блокировки.
2. После выхода 8.3 при работе с информационными системами на платформе «1С» уровень изоляции транзакций регулируется только изменением режима управления блокировкой данных.
3. Транзакции и блокировки тесно связаны друг с другом. Транзакции накладывают блокировки на данные, чтобы обеспечить выполнение требований ACID.
4. И то и другое — ошибки.

Блокировки устанавливаются только для транзакций.

Источники:
«Настольная книга 1С:Эксперта по технологическим вопросам» (ред.2), стр.51

Вопрос 8.37
Наиболее распространенным в централизованных СУБД (включающих системы, основанные на архитектуре «клиент-сервер»):

1. является подход, основанный на соблюдении однофазного протокола синхронизационных захватов объектов баз данных (Single-Phase Locking Protocol, SPL).
2. является подход, основанный на соблюдении двухфазного протокола синхронизационных захватов объектов баз данных (Two-Phase Locking Protocol, 2PL).
3. является подход, основанный на соблюдении трехфазного протокола синхронизационных захватов объектов баз данных (Three-Phase Locking Protocol, 3PL).

 

Вопрос 8.38
В общих чертах подход двухфазного протокола синхронизационных захватов объектов баз данных (Two-Phase Locking Protocol, 2PL) состоит в следующем:

1. перед выполнением любой операции в транзакции T над объектом базы данных О от имени транзакции T запрашивается синхронизационная блокировка объекта О в соответствующем режиме (в зависимости от вида операции) (это первая фаза). Вторая фаза — собственно выполнение операции.
2. первая фаза транзакции — синхронизирующий захват, обмен служебной информацией; вторая фаза — собственно установка блокировки.
3. первая фаза транзакции — накопление захватов; вторая фаза (фиксация или откат) — освобождение захватов.

 

Вопрос 8.39
Пессимистичная блокировка устанавливается:

1. транзакцией в автоматическом режиме управления блокировками.
2. платформой при вызове метода ПолучитьОбъект().
3. расширением формы.
4. транзакцией в управляемом режиме управления блокировками.

Пессимистическая блокировка объектов базы данных предназначена для того, чтобы запретить изменение данных определенного объекта другими сеансами или данным сеансом до тех пор, пока блокировка не будет снята этим объектом встроенного языка.

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

Источники:
ИТС: Блокировки данных в 1С:Предприятии 8

Вопрос 8.40
Оптимистичная блокировка устанавливается:

1. транзакцией в автоматическом режиме управления блокировками.
2. платформой, например, при вызове метода ПолучитьОбъект().
3. расширением формы.
4. транзакцией в управляемом режиме управления блокировками.

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

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

Источники:
ИТС: Блокировки данных в 1С:Предприятии 8

Вопрос 8.41
Оптимистичная блокировка снимается:

1. при вызове ЗафиксироватьТранзакцию().
2. при окончании неявной транзакции.
3. будет держаться, пока объект есть в памяти (например, до конца процедуры).
4. верны ответы 1 и 2.

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

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

Источники:
ИТС: Блокировки данных в 1С:Предприятии 8

Вопрос 8.42
Вложенные транзакции:

1. поддерживаются.
2. не поддерживаются.
3. игнорируются.
4. поддерживаются на уровне платформы, но поддерживаются только явные вложенные транзакции.

1С:Предприятие 8 не поддерживает вложенных транзакций.

Источники:
ИТС: Вложенность транзакций

Вопрос 8.43
Как найти длительную транзакцию?

1. В технологическом журнале собирать события «TRAN», содержащие всю необходимую информацию по длительности транзакций.
2. В технологическом журнале собирать события «SDBL» с фильтром по свойствам Func=CommitTransaction или RollbackTransaction, содержащие всю необходимую информацию по длительности транзакций.
3. В профайлере SQL Server мониторить события BEGIN TRANSACTION и COMMIT TRANSACTION.

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

<?xml version=»1.0″ encoding=»UTF-8″?>
<config xmlns=»http://v8.1c.ru/v8/tech-log»>
<log location=»C:\LOGS\LongEvents» history=»28″>
<event>
<ne property=»Name» value=»»/>
<ge property=»Durationus» value=»20000000″/>
</event>
<property name=»all»/>
</log>
</config>

Файл настройки приведен для версии технологической платформы 8.3, в фильтре по полю Durationus указано время 20 секунд (в микросекундах). Все события, которые попадают в такой журнал (при нормальной работе системы такой журнал должен быть скромных размеров) должны быть предметом рассмотрения, в первую очередь события SDBL со свойством Func=CommitTransaction. Такие события будут иметь длительность внешней (вложенные транзакции технологической платформой не поддерживаются) транзакции. Если транзакция длится более 20 секунд (скорее всего, в рамках транзакции будут установлены транзакционные блокировки на какие-либо ресурсы), она может стать «виновником» ошибок блокировок. Также внимание стоит уделить длительным запросам.

Источники:
Мониторинг на продукционных серверах

Комментарии

2 комментария к “«1С:Профессионал» по технологическим вопросам (Раздел 8)”
  1. Павел:

    Вопросы 8.8, 8.10. Что такое UNDO и REDO-логи где про это почитать?

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

Top