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

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ транзакция β€” это атомарная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, которая выполняСтся ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ понятиС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для 1Π‘, Π½ΠΎ ΠΈ для Π»ΡŽΠ±Ρ‹Ρ… рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΡƒΡ‚ΡŒ проста: Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС дСйствия Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π»ΠΈΠ±ΠΎ Π½Π΅ выполняСтся Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ…. НСт ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… состояний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° ΠΎΡ‚ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, способного ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы.

МногиС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты ΠΏΡƒΡ‚Π°ΡŽΡ‚ понятия фиксации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, полагая, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ() автоматичСски сохраняСт всё Π½Π°Π΄Π΅ΠΆΠ½ΠΎ. На самом Π΄Π΅Π»Π΅, Π±Π΅Π· явного управлСния транзакциями Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² хаос ΠΈΠ· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ². Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ транзакция Π² контСкстС 1Π‘, ΠΊΠ°ΠΊ ΠΎΠ½Π° влияСт Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС этого инструмСнта являСтся Π·Π°Π»ΠΎΠ³ΠΎΠΌ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ атомарности ΠΈ свойства ACID Π² 1Π‘

Основой надСТности Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ являСтся Π½Π°Π±ΠΎΡ€ свойств, извСстный ΠΏΠΎΠ΄ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ACID. Π’ срСдС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ эти свойства ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с управляСмыми Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠΡ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ (Atomicity) Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ сСрия дСйствий Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π°: ΠΎΠ½ΠΈ Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Если Π² ΠΊΠΎΠ΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка Π½Π° дСсятой строкС ΠΈΠ· ста, всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π΄Π΅Π²ΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹ (ΠΎΡ‚ΠΊΠ°Ρ‡Π΅Π½Ρ‹) ΠΊ исходному ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ (Consistency) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ транзакция ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ состояния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ВсС бизнСс-ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ ограничСния цСлостности Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π°, Ρ‚Π°ΠΊ ΠΈ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. НапримСр, остаток Ρ‚ΠΎΠ²Π°Ρ€Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли это Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ настройками ΡƒΡ‡Π΅Ρ‚Π°. Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ (Isolation) Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Пока ΠΎΠ΄Π½Π° транзакция Π°ΠΊΡ‚ΠΈΠ²Π½Π°, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ видят ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ зафиксированы.

Π”ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ (Durability) обСспСчиваСт ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ транзакция зафиксирована, измСнСния ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ постоянными, Π΄Π°ΠΆΠ΅ Ссли сразу послС этого ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сбой оборудования. Π’ 1Π‘ это рСализуСтся Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΆΡƒΡ€Π½Π°Π»Π° рСгистрации ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π‘Π£Π‘Π” (MS SQL, PostgreSQL ΠΈΠ»ΠΈ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ). Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΊΠΎΠ΄Π° 1Π‘, Π½ΠΎ ΠΈ ΠΎΡ‚ настроСк самого сСрвСра Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Бвойство изоляции Π² 1Π‘ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ уровня изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, установлСнного Π² Π‘Π£Π‘Π”. Π’ стандартных конфигурациях часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Β«Π§Ρ‚Π΅Π½ΠΈΠ΅ зафиксированных Π΄Π°Π½Π½Ρ‹Ρ…Β», Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ «грязных» Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ оТиданию, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ сСссиСй.

ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° атомарности β€” самая частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° расхоТдСний Π² ΡƒΡ‡Π΅Ρ‚Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСсчитываСт взаиморасчСты с ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ. Если Π²Ρ‹ Π½Π΅ ΠΎΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅ этот Ρ†ΠΈΠΊΠ» Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, ΠΈ процСсс прСрвСтся Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ списка, Ρƒ части ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² сальдо обновится, Π° Ρƒ части β€” Π½Π΅Ρ‚. Π’ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π±Π°Π·Ρƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ β€” трудоСмкая ΠΈ нСблагодарная Π·Π°Π΄Π°Ρ‡Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ использованиС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… нСсколько связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ явныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅?
Волько Π² слоТных ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…
Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅
Π Π΅Π΄ΠΊΠΎ, полагаюсь Π½Π° Π°Π²Ρ‚ΠΎΡ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ совсСм

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями: ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΈ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ

Для явного управлСния процСссом Π² языкС 1Π‘ прСдусмотрСно Π΄Π²Π° основных ΠΌΠ΅Ρ‚ΠΎΠ΄Π° глобального контСкста: ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() ΠΈ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(). Π’Ρ‹Π·ΠΎΠ² ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡ() ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности. Если транзакция ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° Π°ΠΊΡ‚ΠΈΠ²Π½Π°, создаСтся влоТСнная транзакция. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов. ЀактичСская запись Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π° диск Π‘Π£Π‘Π” происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() Π½Π° самом Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ влоТСнности.

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

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// Π›ΠΎΠ³ΠΈΠΊΠ° провСдСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

ДвиТСнияДокумСнта.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π·Π°ΠΈΠΌΠΎΡ€Π°ΡΡ‡Π΅Ρ‚Ρ‹();

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ОписаниСОшибки();

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с транзакциями. Если Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль), ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π’Π°ΠΌ ΠΌΡ‹ обязаны Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ всС нСзафиксированныС измСнСния. Если этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, сСссия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² состоянии Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, удСрТивая Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ мСшая Ρ€Π°Π±ΠΎΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() сбрасываСт всС измСнСния, сдСланныС с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго Π²Ρ‹Π·ΠΎΠ²Π° ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡ() Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ влоТСнности. Если Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅, ΠΎΡ‚ΠΌΠ΅Π½Π° происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ влоТСнности, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² Π±Π°Π·Ρƒ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π° ΠΈΠ»ΠΈ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой корнСвая транзакция. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ β€” Π·Π°Π»ΠΎΠ³ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ваша систСма Π½Π΅ «зависнСт» ΠΈΠ·-Π·Π° Π·Π°Π±Ρ‹Ρ‚Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

πŸ’‘

ВсСгда провСряйтС свойство «ВранзакцияАктивна» ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ рСкурсивно ΠΈΠ»ΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… мСст. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΉ влоТСнности.

Π£Ρ€ΠΎΠ²Π½ΠΈ влоТСнности ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ создаСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ спСцифику Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ систСмы. Когда Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡƒΠΆΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, счСтчик влоТСнности увСличиваСтся. Команда Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() лишь ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ этот счСтчик. РСальная фиксация Π΄Π°Π½Π½Ρ‹Ρ… происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° счСтчик достигаСт нуля, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° закрываСтся самая пСрвая, корнСвая транзакция.

Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ часто становится источником логичСских ошибок. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ зафиксировал Π΄Π°Π½Π½Ρ‹Π΅, Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ измСнСния всС Π΅Ρ‰Π΅ «висят» Π² памяти ΠΈ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСансам. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π½Π° внСшнСм ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, всС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Ρ€Π°Π· Π²Ρ‹Π·Ρ‹Π²Π°Π»Π°ΡΡŒ фиксация Π²Π½ΡƒΡ‚Ρ€ΠΈ.

Для контроля состояния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция ВранзакцияАктивна(). Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, находится Π»ΠΈ тСкущая сСссия Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ для написания ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ контСкста выполнСния. НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тяТСлыС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, Ссли ΠΌΡ‹ ΡƒΠΆΠ΅ находимся Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс.

Π§Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ ошибкС Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ?

Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ обрабатываСтся Ρ‚Π°ΠΌ ΠΆΠ΅ с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(), Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния этого уровня. Однако, Ссли ошибка пробрасываСтся Π²Ρ‹ΡˆΠ΅ (Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅), Ρ‚ΠΎ внСшняя транзакция Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°, ΠΈΠ½Π°Ρ‡Π΅ сСссия останСтся Π² Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ состоянии.

БущСствуСт распространСнноС Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ нСзависимыС Ρ‚ΠΎΡ‡ΠΊΠΈ сохранСния (savepoints). Π’ 1Π‘ это Π½Π΅ совсСм Ρ‚Π°ΠΊ. Π’ΠΎΡ‡ΠΊΠΈ сохранСния β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π‘Π£Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Π½Π΅ отмСняя всю Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ 1Π‘ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ прямого доступа ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ сохранСния Π‘Π£Π‘Π”, поэтому вся Π»ΠΎΠ³ΠΈΠΊΠ° строится Π½Π° счСтчикС влоТСнности. ПониманиС этого ограничСния ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ слоТных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

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

Если Π΄Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ запись рСгистра ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΠΆΠ΄Π°Ρ‚ΡŒ. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ слишком Π΄ΠΎΠ»Π³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΆΠ΄Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°), Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ врСмя оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΒ». Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· самых частых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСмах.

  • πŸ”’ Эксклюзивная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° β€” Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСансам Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  • πŸ‘οΈ Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ β€” позволяСт Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (зависит ΠΎΡ‚ настроСк изоляции).
  • ⏳ ОТиданиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ β€” состояниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сСссия приостанавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, оТидая освобоТдСния рСсурса.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: транзакция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅. НС стоит Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (Π²Ρ‹Π²ΠΎΠ΄ сообщСний, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌ), Π΄ΠΎΠ»Π³ΠΈΠ΅ HTTP-запросы ΠΈΠ»ΠΈ тяТСлыС ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹. ВсС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ записи Π² Π±Π°Π·Ρƒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” Π³Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ€Π°Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 1Π‘. Они ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ рост ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Π‘Π£Π‘Π” ΠΈ приводят ΠΊ массовым оТиданиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ записи Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅Π½Π΅Π΅ 1-2 сСкунд.

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Одной ΠΈΠ· самых Π³Ρ€ΡƒΠ±Ρ‹Ρ… ошибок являСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρƒ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ сСссий Π² Π‘Π£Π‘Π” ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС записи Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· послС Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

Другая частая ошибка β€” забытая ΠΎΡ‚ΠΌΠ΅Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ошибкС. Если Π²Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π½ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΠ΄ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка, сСссия останСтся Β«Π²ΠΈΡΠ΅Ρ‚ΡŒΒ» с Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ дальшС, ΠΏΠΎΠΊΠ° Π½Π΅ пСрСзапустит сСанс, Π° Π² Π±Π°Π·Π΅ накопятся «висячиС» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ измСнСния ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π½ΠΎΠΌ порядкС Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ классичСская ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (deadlock). Если Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС Π²Ρ‹ сначала Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ А, ΠΏΠΎΡ‚ΠΎΠΌ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π‘, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ (сначала Π‘, ΠΏΠΎΡ‚ΠΎΠΌ А), Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ запускС ΠΎΠ±Π° процСсса ΠΌΠΎΠ³ΡƒΡ‚ навсСгда Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, оТидая освобоТдСния рСсурса.

Ошибка ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΠ΅ Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ
Вранзакция Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ПадСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² N Ρ€Π°Π· ВынСсти Начало/ΠšΠΎΠ½Π΅Ρ† Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°
ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°/Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ВисячиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ сбоях ΠžΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ
Π”ΠΎΠ»Π³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ВынСсти тяТСлыС расчСты Π΄ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
Π Π°Π·Π½Ρ‹ΠΉ порядок Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (Deadlock) Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ

Анализ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² рСгистрации ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с транзакциями. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ событий Β«Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Β» с большим Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ оТидания, это сигнал ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты администрирования 1Π‘ (Консоль сСрвСра, ВСхнологичСский ΠΆΡƒΡ€Π½Π°Π») для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

πŸ’‘

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Вранзакция Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи ΠΈ минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π½ΠΈΡ… чтСния. Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ β€” Π·Π° Π΅Ρ‘ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅

ПовСдСниС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘. Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (.1CD) ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, Ρ‡Π΅ΠΌ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ (MS SQL, PostgreSQL). Ѐайловая Π±Π°Π·Π° ΠΏΠΎ сути Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ вСсь Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ части ΠΏΡ€ΠΈ записи, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ транзакциям. Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ здСсь ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ остановкС Ρ€Π°Π±ΠΎΡ‚Ρ‹ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π‘Π£Π‘Π” Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ изоляции. Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ настройки ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ изоляции. Однако, Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΠ΄Π° Π½Π° языкС 1Π‘ остаСтся Π΅Π΄ΠΈΠ½ΠΎΠΉ для ΠΎΠ±ΠΎΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ эффСктивСн Π² ΠΎΠ±ΠΎΠΈΡ… случаях, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡΡΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ строгиС трСбования ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-сСрвСр ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ² соСдинСния. Если транзакция длится слишком Π΄ΠΎΠ»Π³ΠΎ, Π²Π΅Π±-сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΡ€Π²Π°Ρ‚ΡŒ соСдинСниС ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ, оставив Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π½Π° сторонС сСрвСра 1Π‘. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вопрос ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСтСвого взаимодСйствия.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π½Π° SQL часто Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚ ошибки, скрытыС Ρ€Π°Π½Π΅Π΅. Ѐайловая вСрсия ΠΌΠΎΠ³Π»Π° Β«ΠΏΡ€ΠΎΠ³Π»Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΒ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² SQL ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ явным ошибкам выполнСния. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ тСстируйтС ΠΊΠΎΠ΄ с транзакциями Π½Π° SQL-Π±Π°Π·Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Для обСспСчСния максимальной совмСстимости ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ рСкомСндуСтся Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сразу с ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π­Ρ‚ΠΎ дисциплинируСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ транзакциями ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скаТСтся Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ систСмы Π΄Π°ΠΆΠ΅ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π° ΠΌΠ°Π»ΠΎΠΌ числС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли я Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Ρƒ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ()?

Если сСссия Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ) с Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ нСзафиксированной Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ, сСрвСр 1Π‘ автоматичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΎΡ‚ΠΊΠ°Ρ‚ (rollback) всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны. Однако, ΠΏΠΎΠΊΠ° сСссия Π°ΠΊΡ‚ΠΈΠ²Π½Π°, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ, мСшая Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ…?

Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ. Однако Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ… (нСуправляСмоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) модСль Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ½Π°Ρ‡Π΅. Π’Π°ΠΌ Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ монопольного Ρ€Π΅ΠΆΠΈΠΌΠ°. Π’ соврСмСнных конфигурациях (УправляСмоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основным инструмСнтом обСспСчСния цСлостности.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ сСйчас Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ?

Π’ языкС 1Π‘ Π½Π΅Ρ‚ прямой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для получСния числа ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-счСтчика Π² вашСм ΠΌΠΎΠ΄ΡƒΠ»Π΅, увСличивая Π΅Ρ‘ ΠΏΡ€ΠΈ ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ ΠΏΡ€ΠΈ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ().

ВлияСт Π»ΠΈ транзакция Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния запросов?

Π”Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π‘Π£Π‘Π” ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Π½Ρ‹ выполнСния, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… запросов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… сСссий ΠΈΠ·-Π·Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

НуТно Π»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈ простой записи ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°?

ΠŸΡ€ΠΈ записи ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ() ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ internally ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свою ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. Π―Π²Π½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ, Ссли Π²Ρ‹ записываСтС нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ согласованно, ΠΈΠ»ΠΈ Ссли выполняСтС прямыС запросы ΠΊ рСгистрам.