Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠœΠΈΡ€ InterBase. АрхитСктура, администрированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² InterBase/FireBird/YaffilΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 27

Автор А Ковязин

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊ Π² случаС чтСния записСй, Ρ‚Π°ΠΊ ΠΈ Π² случаС записи. На ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ записСй, ΠΏΠΎΠΌΠΈΠΌΠΎ wait/nowait, Π²Π»ΠΈΡΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ установки уровня изоляции, ΠΈ поэтому ΠΌΡ‹ ΠΈΡ… рассмотрим Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎ ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции. А Π²ΠΎΡ‚ Π½Π° объяснСниС влияния Ρ€Π΅ΠΆΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ записи ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Π½Π΅ влияСт, поэтому ΠΌΡ‹ сСйчас рассмотрим Π΅Π³ΠΎ.

* Рассмотрим случай, ΠΊΠΎΠ³Π΄Π° транзакция А вставляСт запись, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π° Π΅Π΅. Π—Π°Ρ‚Π΅ΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π‘, дСлаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ запись с Ρ‚Π΅ΠΌ ΠΆΠ΅ самым ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΡƒΠΆΠ΅ вставлСна Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ А. Π’ΠΎΡ‚ здСсь ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ отличия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ:

* Ссли транзакция Π‘ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ wait, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ А, ΠΈ Ссли А Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ (commit), Ρ‚ΠΎ вставлСнная Π² Π‘ запись Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ·Π½Π°Π½Π° Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка Deadlock, Π° Ссли ΠΎΠ½Π° откатится (rollback), Ρ‚ΠΎ измСнСния Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π‘ Π±ΡƒΠ΄ΡƒΡ‚ приняты ΠΈ ΠΎΠ½Π° смоТСт ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΈΡ… (Ρ‚. Π΅. ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ commit);

* Ссли транзакция Π‘ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π² nowait, Ρ‚ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка 'lock conflict on no wait transaction'.

* Рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ случай: транзакция А ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° запись, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π° Π΅Π΅ измСнСния. Вранзакция Π‘ пытаСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ эту ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ запись. ΠžΠΏΡΡ‚ΡŒ влияСт Ρ€Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ:

* Ссли Π‘ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ wait, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° А Π½Π΅ подтвСрдится ΠΈΠ»ΠΈ Π½Π΅ отмСнится; Ссли А подтвСрдится, Ρ‚ΠΎ Π² Π‘ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка 'Deadlock - update conflict with concurrent update', - ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ А ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π° свои измСнСния, измСнСния Π² Π‘ ΠΏΡ€ΠΈΠ·Π½Π°ΡŽΡ‚ΡΡ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ; Ссли ΠΆΠ΅ транзакция А откатится, Π‘ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒΡΡ;

* Ссли Π‘ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ nowait, Ρ‚ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка 'lock conflict on no wait transaction'.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, нСясна практичСская Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ описаний Ρ€Π΅ΠΆΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Однако Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… прилоТСниях Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

Π’Ρ‹, вСроятно, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π² сообщСнии ΠΎΠ± ошибкС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ слово "deadlock", ΠΎΠ΄Π½Π°ΠΊΠΎ это слово Π²Ρ‹Π±Ρ€Π°Π½ΠΎ Π½Π΅ совсСм ΡƒΠ΄Π°Ρ‡Π½ΠΎ. Π’ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с английского ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "мСртвая Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°", ΠΈΠ»ΠΈ "Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°". Π’ нашСм случаС, нСсмотря Π½Π° Π³Ρ€ΠΎΠ·Π½ΠΎΠ΅ сообщСниС, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚.

Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° самом Π΄Π΅Π»Π΅ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ?

Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°

Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° - классичСская ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ синхронизации доступа ΠΊ рСсурсу, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° дальнСйшая Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ рассмотрим Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π’1 ΠΈ Π’2

ΠΈ Π΄Π²Π° рСсурса - А ΠΈ Π’; Π² контСкстС Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… рСсурсами ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, записи Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Допустим, выполняСтся такая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий:

* Вранзакция Π’1 Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ рСсурс А, послС Ρ‡Π΅Π³ΠΎ Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½ΠΈΠΌ.

* Вранзакция Π’2 Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ рСсурс Π’, послС Ρ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

* Вранзакция Π’1 ΠΆΠ΅Π»Π°Π΅Ρ‚ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с рСсурсом Π’, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° пытаСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² это врСмя рСсурс Π’ ΡƒΠΆΠ΅ занят Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π’, транзакция Π’1 Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состояниС оТидания.

* Вранзакция Π’2 ΠΆΠ΅Π»Π°Π΅Ρ‚ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с рСсурсом А, пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состояниС оТидания.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ: Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ шанса ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ своС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ΅Ρ€Ρ‚Π²ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Π›ΡŽΠ±ΠΎΠΉ сСрвСр Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ способСн Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· этой ситуации ΠΏΠΎ возмоТности достойно, ΠΈ InterBase Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² качСствС ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ ΠΈ Π΅Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚Π΅, ΠΏΡ€ΠΈ этом другая транзакция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°.

Алгоритм распознавания ситуации Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² InterBase Π½Π΅ запускаСтся сразу ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ сдСлано ΠΈΠ· сообраТСний ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ВмСсто этого выдСрТиваСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ DEADLOCK_TIMEOUT Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ InterBase ibconfig, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого ΠΈ производится сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ блокирования.

Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ программирования Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ, поэтому Π½Π΅ стоит ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Ρ‚Π°ΠΊ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, ΡƒΠ²ΠΈΠ΄Π΅Π² слово "deadlock" Π² сообщСнии ΠΎΠ± ошибкС. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго это всСго лишь ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ обновлСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции.

Установка ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ изоляции

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ упомянуто Π²Ρ‹ΡˆΠ΅, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ измСнСния, сдСланныС Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… транзакциях, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ данная транзакция.

Как Π±Ρ‹Π»ΠΎ сказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Π£Ρ€ΠΎΠ²Π½ΠΈ изоляции", Π² InterBase Π΅ΡΡ‚ΡŒ 3 основных уровня изоляции. ВСорСтичСски сущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ DIRTY READ - "грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅". Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции DIRTY READ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… транзакциях. Π’ InterBase ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ нСльзя Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с Ρ‚Π°ΠΊΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции, хотя тСорСтичСски многовСрсионная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π² InterBase уровням изоляции. Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Read Committed, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉΡΡ константой read_committed. Вранзакция, запущСнная с Ρ‚Π°ΠΊΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ измСнСния, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния самого "свСТСго" состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 1.4, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ разновидности этого уровня изоляции: read_committed rec_version ΠΈ read_committed no_rec_version. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ rec_version. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ записи просто считываСтся послСдняя подтвСрТдСнная вСрсия , записи.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ с no_rec_version Π±ΠΎΠ»Π΅Π΅ слоТСн для объяснСния. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, ΡΡƒΡ‚ΡŒ использования уровня read_committed с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ no_rec_version сводится ΠΊ Ρ‚ΠΎΠΌΡƒ, "Ρ‡Ρ‚ΠΎ транзакция Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ послСднюю ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ записи, Π½ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ свСТСй Π½Π΅ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ вСрсии.

ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ записи Π² Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π½Π΅ сущСствуСт Π»ΠΈ Ρƒ этой записи Π½Π΅ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ вСрсии. Если сущСствуСт, Ρ‚ΠΎ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ (Π² зависимости ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²Ρ‹Π±Ρ€Π°Π½):

* Если wait, Ρ‚ΠΎ наша транзакция ΠΆΠ΄Π΅Ρ‚, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ транзакция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создана нСподтвСрТдСнная запись. И Ссли ΠΎΠ½Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π°ΡΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡŒ, Ρ‚ΠΎ считываСтся послСдняя подтвСрТдСнная вСрсия.

* Если Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° nowait, Ρ‚ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка "Deadlock".

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции read_committed no_rec_version ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ мноТСству ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ слСдуСт с большой ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ изоляции SNAPSHOT задаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ concurrency. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ SNAPSHOT - самый "Ρ€ΠΎΠ΄Π½ΠΎΠΉ" Ρ€Π΅ΠΆΠΈΠΌ InterBase, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСимущСства вСрсионности ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ. ΠŸΡ€ΠΈ Π΅Π³ΠΎ использовании транзакция Π΄Π΅Π»Π°Π΅Ρ‚ "снимок" маски Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ запуска, ΠΈ поэтому, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° длится, Π²ΠΈΠ΄ΠΈΡ‚ Ρ‚Π΅ ΠΆΠ΅ самыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствовали Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΅ запуска. НикакиС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ транзакциями, Π΅ΠΉ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹. Π•ΠΉ Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свои измСнСния. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π² этой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ транзакциями ΡƒΠΆΠ΅ послС Π΅Π΅ запуска (ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π΅Ρ‰Π΅ Π½Π΅ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅), Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚.

Пока выполняСтся транзакция с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции concurrency, ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ всС вСрсии записСй Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΅ запуска, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ видят, Ρ‡Ρ‚ΠΎ SNAPSHOT Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²Π° ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ вСрсии записСй, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ (гипотСтичСски) понадобится Π½Π°ΡˆΠ΅ΠΌΡƒ SNAPSHOT.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ SNAPSHOT примСняСтся Π»ΠΈΠ±ΠΎ для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запросов (ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²), Π»ΠΈΠ±ΠΎ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ блокирования записСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ транзакциями.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ изоляции SNAPSHOT TABLE STABILITY задаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ consistency. Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΡƒΡ€ΠΎΠ²Π½ΡŽ SNAPSHOT, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° запись. Π‘ΡƒΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ проста - Ссли транзакция с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции consistency ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ измСнСния Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с уровнями изоляции read_committed ΠΈ concurrency ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции (Ρ‚. Π΅. consistency) Π½Π΅ смогут Π΄Π°ΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ использованиС этого уровня изоляции позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (сСриализуСмыС) обновлСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Вранзакция запускаСтся, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ сразу Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² зависимости ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ wait ΠΈΠ»ΠΈ nowait Π»ΠΈΠ±ΠΎ ΠΆΠ΄ΡƒΡ‚ своСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ - с этим вопросом часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вопрос ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ всС запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ - запросы Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ самого "свСТСго" состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, запросы Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ измСнСния, запросы Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ справочных Ρ‚Π°Π±Π»ΠΈΡ†, запросы Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΈ Ρ‚. Π΄. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ запросов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ устанавливаСтся своя транзакция (ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ) с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½ΡƒΠΆΠ½Ρ‹Ρ… для выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ.