Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ запрос: Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ запросы – Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ – Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ…

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как оказалось, Π·Π½Π°ΡŽΡ‚ всС, Π° ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π΅ всС. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² mysql ΠΈ SELECT FOR UPDATE / Habr

По Π΄ΠΎΠ»Π³Ρƒ слуТбы ΠΌΠ½Π΅ приходится ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ собСсСдования Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Β«[ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ|младший] Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ python/djangoΒ», Β«Ρ‚ΠΈΠΌΠ»ΠΈΠ΄Β». К ΠΌΠΎΠ΅ΠΌΡƒ Π²Π΅Π»ΠΈΠΊΠΎΠΌΡƒ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΡŽ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ 9 ΠΈΠ· 10 соискатСлСй, Π² Ρ€Π΅Π·ΡŽΠΌΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… значатся слова Β» Mysql/Innodb/transactions/triggers/stored proc etc.Β», Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ своСм ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΎΠΏΡ‹Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ. Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ описания Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования, ΠΊ соТалСнию, я Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ».

Π”Π°Π»Π΅Π΅ ΠΏΠΎ собСсСдованию я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ситуации:

Допустим, ΠΌΡ‹ являСмся ΠΎΠ½Π»Π°ΠΉΠ½ сСрвисом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ внСшним ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΌ API (активация услуги, ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ вашСй Π΄ΡƒΡˆΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ наш сСрвис сам ΠΏΠ»Π°Ρ‚ΠΈΡ‚ дСньги Π·Π° пользованиС API. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² нашСй систСмС создаСт запрос Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΡŽ услуги, заполняСт всС поля ΠΈ Π½Π° послСднСй страницС ΠΆΠΌΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ услугу». Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ HTTP запроса ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² нашСй Π‘Π” запись (запрос Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΡŽ услуги). Каков наш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ?- ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽ я ΠΈ сам ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽ:

β€” достаСм ΠΈΠ· Π±Π°Π·Ρ‹ баланс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
β€” Ссли баланса достаточно, Ρ‚ΠΎ Π΄Π΅Ρ€Π³Π°Π΅ΠΌ API;
β€” Ссли всё Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚ΠΎ списываСм с баланса сумму Π·Π° услугу, Π΄Π΅Π»Π°Π΅ΠΌ UPDATE, ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ, ΠΈΠ½Π°Ρ‡Π΅ откатываСмся;
β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

Π’Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всё Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈ ΡΠ°ΠΌΡƒΡŽ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Π²ΠΈΠ΄Π΅ 10 ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Ρ… запросов (Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ баланс ΠΈ Π½Π°Ρ‡Π½ΡƒΡ‚ Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ Π² API), Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ самыС ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½Ρ‹Π΅, начиная ΠΎΡ‚ выполнСния 5 сСлСктов (стоит ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒΡΡ, я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ понял Π² этом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅), использования Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… счСтчиков, Π²Π½Π΅ΡˆΠ½ΠΈΡ… кСшСй, Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π² Π±Π΄, слипов ΠΈ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠΉΠΌΠΈ Ρ‡Π΅Π³ΠΎ.

Как извСстно (Π° это Π·Π½Π°Π»ΠΈ всС ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹!), innodb Π² mysql прСдоставляСт Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ построчной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот самый построчный Π»ΠΎΠΊ, достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ SELECT-Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ FOR UPDATE, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

SELECT * FROM requests WHERE id=5 FOR UPDATE

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

Π’Π°ΠΊΠΆΠ΅ стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС FOR UPDATE Π»ΡƒΡ‡ΡˆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ autocommit-ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π»ΠΎΡ‡ΠΈΠ»ΠΈ, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°ΠΏΠ΄Π΅ΠΉΡ‚Π° Π»ΠΎΠΊ снимСтся.

Π’Ρ€ΠΎΠ΄Π΅ ΠΌΠ΅Π»ΠΎΡ‡ΡŒ, Π²Ρ€ΠΎΠ΄Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ 9 ΠΈΠ· 10…

upd
ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Β«Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² mysqlΒ», Π½Π΅ раскрытоС Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Β» Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² mysql ΠΈ SELECT FOR UPDATEΒ»

Π—Π«
Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ говорится ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ АПИ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Ρ€Π³Π°Ρ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² случаС сбоя ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации.

свойства ACID, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с измСнСниями Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

ΠžΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°: транзакция β€” это Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹, которая выполняСтся Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ SQL β€” это Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСйствий, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… Π² логичСском порядкС: Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Вранзакция β€” это осущСствлСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли Π²Ρ‹ создаСтС, обновляСтС ΠΈΠ»ΠΈ удаляСтС запись ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Ρ‹ выполняСтС Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Ρ‹ собираСтС мноТСство SQL-запросов Π² Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ вмСстС ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Бвойства Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ стандартных свойства, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Ρ… Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ACID.

ΠΡ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ – обСспСчиваСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ входящиС Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС транзакция прСрываСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ сбоя, ΠΈ всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ состояниС.

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

БСсплатный курс ΠΏΠΎ PHP ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

ΠžΡΠ²ΠΎΠΉΡ‚Π΅ курс ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΉ сайт Π½Π° PHP ΠΈ MySQL с ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ нуля, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ модСль MVC

Π’ курсС 39 ΡƒΡ€ΠΎΠΊΠΎΠ² | 15 часов Π²ΠΈΠ΄Π΅ΠΎ | исходники для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ курс сСйчас!

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ β€” обСспСчиваСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ измСняла состояниС ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π˜Π·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ β€” позволяСт транзакциям Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ.

Π”ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ β€” Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ сохранится Π² случаС сбоя систСмы.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями

Для управлСния транзакциями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

COMMIT β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния.

ROLLBACK β€” ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния.

SAVEPOINT β€” создаСт Ρ‚ΠΎΡ‡ΠΊΠΈ сохранСния Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

SET TRANSACTION β€” ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ имя Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ управлСния транзакциями

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ управлСния транзакциями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ DML, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ β€” INSERT, UPDATE ΠΈ DELETE. Они Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ автоматичСски Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Команда COMMIT

Команда COMMIT β€” это транзакционная ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ внСсСнных Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Команда COMMIT сохраняСт всС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° выполнСния послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ COMMIT ΠΈΠ»ΠΈ ROLLBACK.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ COMMIT ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ CUSTOMERS, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи:

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ с возрастом = 25, Π° Π·Π°Ρ‚Π΅ΠΌ эти измСнСния Π±ΡƒΠ΄ΡƒΡ‚ сохранСны Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

DELETE FROM CUSTOMERS WHERE AGE = 25; COMMIT;

DELETE FROM CUSTOMERS

  WHERE AGE = 25;

COMMIT;

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π΄Π²Π΅ строки, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния инструкции SELECT Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Команда ROLLBACK

Команда ROLLBACK β€” это транзакционная ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ сохранСны Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° выполнСния послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ COMMIT ΠΈΠ»ΠΈ ROLLBACK.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ROLLBACK ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ CUSTOMERS, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи:

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

БСсплатный курс ΠΏΠΎ PHP ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

ΠžΡΠ²ΠΎΠΉΡ‚Π΅ курс ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΉ сайт Π½Π° PHP ΠΈ MySQL с ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ нуля, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ модСль MVC

Π’ курсС 39 ΡƒΡ€ΠΎΠΊΠΎΠ² | 15 часов Π²ΠΈΠ΄Π΅ΠΎ | исходники для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ курс сСйчас!

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ всС записи для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… возраст = 25, Π° Π·Π°Ρ‚Π΅ΠΌ эти измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹.

DELETE FROM CUSTOMERS WHERE AGE = 25; ROLLBACK;

DELETE FROM CUSTOMERS

  WHERE AGE = 25;

ROLLBACK;

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, опСрация удалСния Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ измСнСниям Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния инструкции SELECT Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Команда SAVEPOINT

SAVEPOINT – это Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π½Π΅ откатывая Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SAVEPOINT ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

SAVEPOINT SAVEPOINT_NAME;

SAVEPOINT SAVEPOINT_NAME;

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для создания SAVEPOINT Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. Команда ROLLBACK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ SAVEPOINT.

Бинтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ SAVEPOINT, ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅.

ROLLBACK TO SAVEPOINT_NAME;

ROLLBACK TO SAVEPOINT_NAME;

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ CUSTOMERS. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ SAVEPOINT ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊ любой SAVEPOINT любоС врСмя ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² исходноС состояниС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ CUSTOMERS, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи.

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° содСрТит ряд ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

SAVEPOINT SP1; Savepoint created. DELETE FROM CUSTOMERS WHERE ID=1; 1 row deleted. SAVEPOINT SP2; Savepoint created. DELETE FROM CUSTOMERS WHERE ID=2; 1 row deleted. SAVEPOINT SP3; Savepoint created. DELETE FROM CUSTOMERS WHERE ID=3; 1 row deleted.

SAVEPOINT SP1;

Savepoint created.

DELETE FROM CUSTOMERS WHERE ID=1;

1 row deleted.

SAVEPOINT SP2;

Savepoint created.

DELETE FROM CUSTOMERS WHERE ID=2;

1 row deleted.

SAVEPOINT SP3;

Savepoint created.

DELETE FROM CUSTOMERS WHERE ID=3;

1 row deleted.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ измСнСния, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ SAVEPOINT, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ SP2. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ SP2 Π±Ρ‹Π»Π° создана послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ удалСния, послСдниС Π΄Π²Π° удалСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹:

ROLLBACK TO SP2; Rollback complete.

ROLLBACK TO SP2;

Rollback complete.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΊ SP2, Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Команда RELEASE SAVEPOINT

Команда RELEASE SAVEPOINT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния созданной Ρ‚ΠΎΡ‡ΠΊΠΈ SAVEPOINT. Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ RELEASE SAVEPOINT ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

RELEASE SAVEPOINT SAVEPOINT_NAME;

RELEASE SAVEPOINT SAVEPOINT_NAME;

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ SAVEPOINT Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π°, Π²Ρ‹ большС Π½Π΅ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ROLLBACK для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… послС послСднСй SAVEPOINT.

Команда SET TRANSACTION

Команда SET TRANSACTION ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для инициирования Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания характСристик Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, которая задаСтся послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ для Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ чтСния ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись. Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SET TRANSACTION ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

SET TRANSACTION [ READ WRITE | READ ONLY ];

SET TRANSACTION [ READ WRITE | READ ONLY ];

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://www.tutorialspoint.com/

РСдакция: Команда webformyself.

SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

БСсплатный курс ΠΏΠΎ PHP ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

ΠžΡΠ²ΠΎΠΉΡ‚Π΅ курс ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΉ сайт Π½Π° PHP ΠΈ MySQL с ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ нуля, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ модСль MVC

Π’ курсС 39 ΡƒΡ€ΠΎΠΊΠΎΠ² | 15 часов Π²ΠΈΠ΄Π΅ΠΎ | исходники для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ курс сСйчас! SQL β€” Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ MySQL?

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ курс ΠΏΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… MySQL!

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ

ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ сайтов, способы Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅

Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΌΠ½Π΅, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ слово ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΠ΅ запросы? Ну, навСрняка, Π² этом словС Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ смысла, Ρ‡Ρ‚ΠΎ просто ΠΏΠΏΡ†.

Π’Π΅Π΄ΡŒ, ΠΏΠΎ сути, ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΠ΅ запросы – это ΠΎΠ΄Π½Π° ΠΈΠ· основ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ сайта. И Ссли ΠΏΡ€ΠΈ создании сайта ошибСшься ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΏΡƒΡΡ‚ΡƒΡŽ сольСшь Π±Π°Π±Π»ΠΎ, Π° Π²Ρ‹Ρ…Π»ΠΎΠΏΠ° Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

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

ΠšΡΡ‚Π°Ρ‚ΠΈ, идСя этого поста Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ мСня просто Π·Π°Π΄ΠΎΠ»Π±Π°Π»ΠΈ Ρ‚Π΅Ρ€Ρ€ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ β€” Как Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΠ²Π°Ρ…. МСга ΠΌΠ°Π½ΡƒΠ°Π» для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Π°Π΄Π²Π΅Ρ€Ρ‚ΠΎΠ². Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сайта ΠΏΠΎΠ΄ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Π² Ρ‡Π΅ΠΌ соль? Π’ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ сути Π½Π΅Ρ„ΠΈΠ³ Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сайт ΠΏΠΎΠ΄ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹, Ссли Π½Π΅ знаСшь запросы, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅ΡˆΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ. Π’Π΅Ρ€Π½Π΅Π΅, Ссли Π½Π΅ знаСшь запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ‚ΡŒΡΡ.

Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΡΠΎΠ±ΠΈΡ€Π°Π΅ΡˆΡŒΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сайт ΠΏΠΎΠ΄ ΠœΠΈΠΊΡΠΌΠ°Ρ€ΠΊΠ΅Ρ‚, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΊΡƒ (Π²ΠΎΡ‚ Π²Π°ΠΌ ΠΊΡƒΡ‡Π° ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΎΠΊ с описаниями), Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΆΠ΅ Ρ„ΠΈΠ³, считай, самоС Π²Π°ΠΆΠ½ΠΎΠ΅ – это ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΠ΅ запросы.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ выявлСния ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΡ… запросов ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Π°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ сайта – Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ?

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ качСствСнных запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ впослСдствии Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ – это Ρ‚ΠΈΠΏΡ‹ запросов.

Π˜Ρ… Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π°:

1. НавигационныС. ЦСль ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ – Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ сайт

2. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅. ЦСль ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ – Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ

3. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅. ΠžΡ‚ слова «транзакция». Π—Π΄Π΅ΡΡŒ само слово ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎ Ρ‚Π°ΠΊΠΈΠΌ запросам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ дСйствия

ΠžΡ‚ΡΡŽΠ΄Π° Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ логичСской Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅. А ΠΈΠΌΠ΅Π½Π½ΠΎ: Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ запросы – это Ρ€Π°Π·.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… запросов:

β€” ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π΄ΠΎΠΌΠΈΠΊ Π² подмосковьС
β€” Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„ΡƒΡ‚Π±ΠΎΠ»ΠΊΡƒ
β€” Ρ€Π΅ΠΌΠΎΠ½Ρ‚ Π°Π²Ρ‚ΠΎ
β€” ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ скайп
β€” ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΆΡƒΡ€Π½Π°Π» ΠΌΡƒΡ€Π·ΠΈΠ»ΠΊΠ°

Π’ΠΎ Π΅ΡΡ‚ΡŒ, я логичСски ΠΌΡ‹ΡΠ»ΡŽ Ρ‚Π°ΠΊ. Если я создаю сайт ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΊΡƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„, Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ΅Π½ список запросов, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ хотят ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ дСйствиС. Если я дСлаю сайт ΠΏΠΎΠ΄ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹, Ρ‚ΠΎ, разумССтся, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ мСня Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова со словом Β«ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒΒ». ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‚ ΠΆΠ΅ Google Adwords, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ слова Π½Π΅ пропустят ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π—Π΄Π΅ΡΡŒ, ΠΏΡ€Π°Π²Π΄Π°, Π½Π΅ ΠΎΠ± этом Ρ€Π΅Ρ‡ΡŒ, поэтому Ρ‡Ρ‚ΠΎ касаСтся AdWords Ρ‚Ρ€Π°Ρ„Π°, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠœΠ°ΡΡ‚Π΅Ρ€-класс ΠΏΠΎ Google Adwords ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ для слива Π½Π° ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΊΠΈ. Π― Ρ‚Π°ΠΌ всС популярным языком объяснил.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ – ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Ρ‹ коммСрчСскиС запросы.

Π’Ρ€Π΅Ρ‚ΡŒΠ΅ – ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, какая Ρ‚Π°ΠΌ конкурСнция, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΡ‚Π΅ΡΠ½ΠΈΡ‚ΡŒ Π½Ρ‹Π½Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ² Ρ€Ρ‹Π½ΠΊΠ°. А Π»ΡƒΡ‡ΡˆΠ΅ всСго – Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² AdWords. Ну ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²Ρ‹ Ρ‚Π°ΠΌ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΈΠΊΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² Π² AdWords, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SemRush (см. ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Π½ΡƒΠ°Π» ΠΏΠΎ SemRush. Π”Π°ΠΉΡ‚Π΅ ΠΏΠΈΠ½ΠΊΠ° Π²Π°ΡˆΠ΅ΠΌΡƒ бизнСсу!) Если ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ ΠΈΠ· Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AdsDock (см. Π—Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΆΠ΅ΠΌ Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅? УпроститС процСсс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AdsDock.com) Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎΠ΄ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹ – это ступодово ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π§Π΅Ρ‚Π²Π΅Ρ€Π½ΠΎΠ΅ – Π»ΠΎΠ³ΠΈΠΊΠ°

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π½ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈ, Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π² Π΄Π΅Π»Π΅ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΡ… запросов – Π΄Π΅Π»ΠΎ вСсьма ΠΈ вСсьма отвСтствСнноС. Π― Ρ€Π°Π½ΡŒΡˆΠ΅ Π»ΠΎΠΆΠΈΠ» Π±ΠΎΠ»Ρ‚ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΈ особо Π½Π΅ задумывался Π½Π°Π΄ всСми этими психологичСскими Π·Π°ΠΌΠΎΡ€ΠΎΡ‡ΠΊΠ°ΠΌΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, шСл ΠΊΠ°ΠΊ Π±Π°Ρ€Π°Π½: искал Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ подходящий запрос, ΠΈ Π΄Π²ΠΈΠ³Π°Π» Π΅Π³ΠΎ. На Π·Π°Ρ€Π΅ своСго обучСния seo я Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ своСго старого Π±Π»ΠΎΠ³Π° ΠΏΠΎΠΊΡƒΠΏΠ°Π» постовыС с Π°Π½ΠΊΠΎΡ€ΠΎΠΌ Β«Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ сайтов». ΠŸΠΎΠΊΡƒΠΏΠ°Π» ΠΈΡ… Π½Π° страницу с описаниСм ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ сСрвиса. И всС Π±Π°Π±ΠΊΠΈ, помню, Π»ΠΎΠΆΠΈΠ» Π½Π° этот запрос. Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ посрСдством своСй Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΈ кошСлька Ρ‚ΠΎΠΆΠ΅ понял, Ρ‡Ρ‚ΠΎ смысл Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ практичСски отсутствуСт.

Когда сСгодня я Π²Ρ‹Π±ΠΈΡ€Π°ΡŽ запросы, Ρ‚ΠΎ я Π½Π΅ Ρ€ΠΎΡŽ с Ρ„Π°Π½Π°Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ запросов. Но я дСлаю повСрхностный Π°Π½Π°Π»ΠΈΠ·, ΠΈ ΠΏΡ€ΠΈΠΊΠΈΠ΄Ρ‹Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ самый популярный запрос – «пластиковыС ΠΎΠΊΠ½Π°Β». ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ этот запрос сразу, сходу, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. НуТно ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мыслит ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΊΡƒΠΏΠΈΡ‚ΡŒ пластиковыС ΠΎΠΊΠ½Π°. Π—Π΄Π΅ΡΡŒ я Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΠΌ запросом Π±ΡƒΠ΄Π΅Ρ‚ «пластиковыС ΠΎΠΊΠ½Π° ΠΎΡ‚Π·Ρ‹Π²Ρ‹Β». ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ здСсь Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΡƒΠΆΠ΅ достаточно находился ΠΏΠΎ сайтам, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ΡΠ΅ΡΡ‚ΡŒ Π³ΠΎΠ²Π½ΠΎΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π³ΠΎΠ²Π½ΠΎΠΎΠΊΠ½Π°. Им Π½ΡƒΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ характСристики.

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

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС, всС это я ΠΏΠΎΠ΄Π²ΠΎΠΆΡƒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго рулят ΠΈΠΌΠ΅Π½Π½ΠΎ низкочастотники. ИмСнно ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚Π΄Π°Ρ‡Ρƒ. Π’ΠΎΡ‚ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ запрос «пластиковыС ΠΎΠΊΠ½Π° KraussΒ» Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΠΌ, Ρ‡Π΅ΠΌ запрос «пластиковыС ΠΎΠΊΠ½Π°Β».

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π›ΠΈΡ‡Π½ΠΎ я Π² своСй ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ сильно Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π»Π΅Π·Ρƒ Π² Π΄Π΅Π±Ρ€ΠΈ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΡ… запросов. НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  1. ΠŸΠΎΠ΄ΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽ, ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΈΠΊΠ°ΠΌ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹ Π² AdWords

  2. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΠΎ сайту, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ Π½Π° ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΊΡƒ. Для этого Π² ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΊΠ°Ρ… (Ρ‚Π°ΠΌ Π³Π΄Π΅ это ΠΌΠΎΠΆΠ½ΠΎ) ΡΠΌΠΎΡ‚Ρ€ΡŽ IP, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ приходят ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΠΈ Π½Π° сайт, Π° ΠΏΠΎΡ‚ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LI (Ссли Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ знаю Π³Π΄Π΅ ΠΊΠΎΠΏΠ°Ρ‚ΡŒ) Π½Π°Ρ…ΠΎΠΆΡƒ эти IP, ΠΈ Π²ΠΈΠΆΡƒ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ запросам ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΠΈ

  3. Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ приходится ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с покупатСлями Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’ этом случаС просто ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽ Ρƒ Π½ΠΈΡ…, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ нашли мСня ΠΈ ΠΌΠΎΠΉ сайт.

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

БСгодня Π½Π° дСсСрт: Ѐилигранная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ футболистов

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΠΎ 5-бальной шкалС:

Загрузка…

Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅

Facebook

Twitter

Google+

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ запись? ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° обновлСния ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅:

TwitterFacebook

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈΡ… контроля / Habr

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ


Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ называСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ†

Вранзакция это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния ΠΈ записи. ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ сохранСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (фиксация, commit) Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΎΡ‚ΠΊΠ°Ρ‚, rollback). ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Π‘Π” транзакция это Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ запрос.
Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ свойствам ACID

ΠΡ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ. Вранзакция Π»ΠΈΠ±ΠΎ выполняСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π»ΠΈΠ±ΠΎ Π½Π΅ выполняСтся вовсС.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½Ρ‹ ограничСния Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ constraints Π² Π‘Π”). Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ состояния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅.

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

Π£ΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ. ПослС фиксации измСнСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ утСряны.

Π–ΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ


Π–ΡƒΡ€Π½Π°Π» Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ транзакциями, обСспСчиваСт Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² случаС сбоя систСмы

Π–ΡƒΡ€Π½Π°Π» содСрТит значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π»ΠΈ Π΄ΠΎ ΠΈ послС ΠΈΡ… измСнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ. Write-ahead log strategy обязываСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΆΡƒΡ€Π½Π°Π» запись ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… значСниях Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π°, Π° ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’ случаС Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠΉ остановки систСмы Π‘Π” Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π»ΠΎΠ³ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС ΠΈ отмСняСт измСнСния сдСланныС транзакциями. ВстрСтив ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Π‘Π” выполняСт Π΅Π΅ ΠΈ вносит измСнСния ΠΎ Π½Π΅ΠΉ Π² ΠΆΡƒΡ€Π½Π°Π». ΠΠ°Ρ…ΠΎΠ΄ΡΡΡŒ Π² состоянии Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ сбоя, Π‘Π” Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π»ΠΎΠ³ Π² прямом порядкС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ измСнСния сдСланныС транзакциями. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ сохраняСтся ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ зафиксированы ΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ нСдостаточно для восстановлСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. На счСту Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ 500$ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΡΠ½ΡΡ‚ΡŒ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚. Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ баланса ΠΈ Ссли Π½Π° балансС достаточно срСдств Π²Ρ‹Π΄Π°Π΅Ρ‚ дСньги ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Вторая Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· баланса Π½ΡƒΠΆΠ½ΡƒΡŽ сумму. Допустим, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой систСмы ΠΈ пСрвая опСрация Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ, Π° вторая Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ. Π’ этом случаС ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹Π΄Π°Ρ‚ΡŒ дСньги ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° систСмы Π² ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС с ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ балансом.

Π£Ρ€ΠΎΠ²Π½ΠΈ изоляции


Π§Ρ‚Π΅Π½ΠΈΠ΅ фиксированных Π΄Π°Π½Π½Ρ‹Ρ… (Read Committed)

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° грязного чтСния (Dirty Read) Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ транзакция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ баланса 0$. Π’1 добавляСт ΠΊ балансу 50$. Π’2 считываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ баланса (50$). Π’1 отмСняСт измСнСния ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. T2 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ располагая Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ балансС.

РСшСниСм являСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ фиксированных Π΄Π°Π½Π½Ρ‹Ρ… (Read Committed) Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰Π΅Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ. Если транзакция A ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ транзакция B ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π·Π° этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ A.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Repeatable Read)

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° потСрянных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Lost Updates). Π’1 сохраняСт измСнСния ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π’2.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ баланса 0$ ΠΈ Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ баланс. T1 ΠΈ T2 Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ баланс Ρ€Π°Π²Π½Ρ‹ΠΉ 0$. Π—Π°Ρ‚Π΅ΠΌ T2 прибавляСт 200$ ΠΊ 0$ ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. T1 прибавляСт 100$ ΠΊ 0$ ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 100$ вмСсто 300$.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° нСповторяСмого чтСния (Unrepeatable read). ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π’1 Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ баланса Ρ€Π°Π²Π½ΠΎΠ΅ 0$. Π—Π°Ρ‚Π΅ΠΌ Π’2 добавляСт ΠΊ балансу 50$ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π’1 ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ нСсоотвСтствиС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Repeatable Read) Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Если транзакция A ΠΏΡ€ΠΎΡ‡Π»Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ транзакция B ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π·Π° этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ A.

УпорядочСнноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Serializable)

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½ΠΎΠ³ΠΎ чтСния (Phantom Reads). Π”Π²Π° запроса Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. T1 Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ количСство всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ баланс ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС 0$ Π½ΠΎ мСньшС 100$. T2 Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ 1$ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с балансом 101$. T1 ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ выполняСт запрос.

УпорядочСнноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Serializable). Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅. ЗапрСщаСтся ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ записи, ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄ условия запроса. Если транзакция A запросила Π΄Π°Π½Π½Ρ‹Π΅ всСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ замораТиваСтся для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ A.

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ (Scheduler)


УстанавливаСт ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΡ… транзакциях

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изолированности. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ зависит ΠΎΡ‚ ΠΈΡ… очСрСдности, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ (Permutable). ΠšΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния-записи ΠΈ записи-записи Π½Π΅ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹. Π—Π°Π΄Π°Ρ‡Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выполняСмыС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ транзакциями Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π±Ρ‹Π» эквивалСнтСн ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ контроля ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ (Concurrency Control)


ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ основан Π½Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², пСссимистичСский Π½Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

ΠŸΡ€ΠΈ оптимистичСском ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π² своС распоряТСниС ΠΊΠΎΠΏΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сохраняСт измСнСния, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ позволяСт ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, Π½ΠΎ систСма Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ послС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°.

ΠŸΡ€ΠΈ пСссимистичСском ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ²ΡˆΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ прСпятствуСт ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ. Если ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Ρ€Π΅Π΄ΠΊΠΈ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° (Locking)


Если ΠΎΠ΄Π½Π° транзакция Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π»Π° Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ обязаны ΠΆΠ΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

Π‘Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ряд ΠΈΠ»ΠΈ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. БовмСстный Π·Π°Ρ…Π²Π°Ρ‚ (Shared Lock) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π»ΠΎΠΆΠ΅Π½ Π½Π° ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ нСсколькими транзакциями, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ всСм транзакциям (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½Π°Π»ΠΎΠΆΠΈΠ²ΡˆΡƒΡŽ) Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π·Π°Ρ…Π²Π°Ρ‚. ΠœΠΎΠ½ΠΎΠΏΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π·Π°Ρ…Π²Π°Ρ‚ (Exclusive Lock) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π»ΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ дСйствия налоТившСй Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ дСйствия ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ.
Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ считаСтся ситуация ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания, длящСмся бСсконСчно Π΄ΠΎΠ»Π³ΠΎ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠ΅Ρ€Π²Π°Ρ транзакция ΠΆΠ΄Π΅Ρ‚ освобоТдСния Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ вторая ΠΆΠ΄Π΅Ρ‚ освобоТдСния Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠΉ.
ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ позволяСт Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ восстанавливаСт систСму откатывая ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅

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

КаТдой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ T присваиваСтся врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° TS содСрТащая врСмя Π½Π°Ρ‡Π°Π»Π° выполнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Wait-Die.

Если TS(Ti) < TS(Tj), Ρ‚ΠΎ Ti ΠΆΠ΄Π΅Ρ‚, ΠΈΠ½Π°Ρ‡Π΅ Ti откатываСтся ΠΈ начинаСтся Π·Π°Π½ΠΎΠ²ΠΎ с Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ.

Если молодая транзакция Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ»Π° рСсурс, Π° Π±ΠΎΠ»Π΅Π΅ старая Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ рСсурс, Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ. Если Π±ΠΎΠ»Π΅Π΅ старая транзакция Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ»Π° рСсурс, Ρ‚ΠΎ молодая транзакция Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π°Ρ этот рСсурс Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Ρ‡Π΅Π½Π°.

Wound-wait.

Если TS(Ti) < TS(Tj), Ρ‚ΠΎ Tj откатываСтся ΠΈ начинаСтся Π·Π°Π½ΠΎΠ²ΠΎ с Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ, ΠΈΠ½Π°Ρ‡Π΅ Ti ΠΆΠ΄Π΅Ρ‚.

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

ΠŸΠ΅ΡΡΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π΅ позволяСт Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ссли Π΅ΡΡ‚ΡŒ риск возникновСния Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

Для обнаруТСния Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ строится Π³Ρ€Π°Ρ„ (Π³Ρ€Π°Ρ„ оТидания, wait-for-graph), Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π° Ρ€Π΅Π±Ρ€Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΎΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… освобоТдСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ²ΡˆΠΈΠΌ эти Π΄Π°Π½Π½Ρ‹Π΅. БчитаСтся Ρ‡Ρ‚ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π°, Ссли Π³Ρ€Π°Ρ„ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°Ρ†ΠΈΠΊΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° оТидания, особСнно Π² распрСдСлСнных Π‘Π”, дорогостоящая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°.
Двухфазная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° β€” ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°Ρ…Π²Π°Ρ‚Π° всСх рСсурсов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ освобоТдСния ΠΈΡ… Π² ΠΊΠΎΠ½Ρ†Π΅

ВсС Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ. Π˜ΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„Π°Π·Ρ‹ β€” Growing Phase ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠ² ΠΈ Shrinking Phase ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит освобоТдСниС Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠ². ΠŸΡ€ΠΈ нСвозмоТности Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· рСсурсов транзакция начинаСтся сначала. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ситуация ΠΊΠΎΠ³Π΄Π° транзакция Π½Π΅ смоТСт Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ рСсурсы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли нСсколько Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° ΠΎΠ΄Π½ΠΈ рСсурсы.
Π”Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ обСспСчиваСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° всСх Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ… Π‘Π”

КаТдая Π‘Π” вносит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Π»ΠΎΠ³ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Ρƒ ОК (Voting Phase). ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ всС ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ ОК ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ отсылаСт сигнал ΠΎΠ±ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ всСх произвСсти ΠΊΠΎΠΌΠΌΠΈΡ‚. ПослС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° сСрвСра ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ ОК, Ссли Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ОК, Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ отсылаСт сигнал ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ всСм сСрвСрам (Completion Phase).

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ


Π‘ΠΎΠ»Π΅Π΅ старая транзакция откатываСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, задСйствованным Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ

КаТдой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ назначаСтся врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° TS ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Ρ‡Π°Π»Π° выполнСния. Если Ti ΡΡ‚Π°Ρ€ΡˆΠ΅ Tj, Ρ‚ΠΎ TS(Ti)TS(Tj).

Когда транзакция откатываСтся, Π΅ΠΉ назначаСтся новая врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Q задСйствованный Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ помСчаСтся двумя ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ. W-TS(Q) β€” врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° самой ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠ΅ΠΉ запись Π½Π°Π΄ Q. R-TS(Q) β€” врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° самой ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠ΅ΠΉ запись чтСния Π½Π°Π΄ Q.

Когда транзакция T Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Q Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

Если TS(T) < W-TS(Q), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ, Ρ‚ΠΎ транзакция T откатываСтся.

Если TS(T) >= W-TS(Q), Ρ‚ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ выполняСтся ΠΈ R-TS(Q) становится MAX(R-TS(Q), TS(T)).

Когда транзакция T Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Q Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

Если TS(T) < R-TS(Q), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Ссли произвСсти ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. Вранзакция T откатываСтся.

Если TS(T) < W-TS(Q), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ транзакция пытаСтся ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, транзакция T откатываСтся. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ выполняСтся ΠΈ W-TS(Q) становится Ρ€Π°Π²Π½Ρ‹ΠΌ TS(T).

НС трСбуСтся дорогостоящСго построСния Π³Ρ€Π°Ρ„Π° оТидания. Π‘ΠΎΠ»Π΅Π΅ старыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ зависят ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ…, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π³Ρ€Π°Ρ„Π΅ оТидания Π½Π΅Ρ‚ Ρ†ΠΈΠΊΠ»ΠΎΠ². НСт Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚, Π° сразу ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ каскадныС ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹. Если Ti ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΠ»Π°ΡΡŒ, Π° Tj ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° Ti, Ρ‚ΠΎ Tj Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ. Если ΠΏΡ€ΠΈ этом Tj ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π°, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° устойчивости.

Одно ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ каскадных ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠ². Вранзакция выполняСт всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ обязаны ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ.

Thomas write rule β€” вариация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ старой

Вранзакция T Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Q. Если TS(T)W-TS(Q), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ транзакция пытаСтся ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, транзакция T Π½Π΅ откатываСтся ΠΊΠ°ΠΊ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ.

Вранзакция (ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°) β€” ВикипСдия

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

Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅), ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ распрСдСлённыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. РаспрСдСлённыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ использованиС Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, two-phase commit β€” Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» фиксации Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ). Π’Π°ΠΊΠΆΠ΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСвСсти с банковского счёта Π½ΠΎΠΌΠ΅Ρ€ 5 Π½Π° счёт Π½ΠΎΠΌΠ΅Ρ€ 7 сумму Π² 10 Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ дСйствий:

  1. ΠŸΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ баланс Π½Π° счСту Π½ΠΎΠΌΠ΅Ρ€ 5.
  2. Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ баланс Π½Π° 10 Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†.
  3. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ баланс счёта Π½ΠΎΠΌΠ΅Ρ€ 5.
  4. ΠŸΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ баланс Π½Π° счСту Π½ΠΎΠΌΠ΅Ρ€ 7.
  5. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ баланс Π½Π° 10 Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†.
  6. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ баланс счёта Π½ΠΎΠΌΠ΅Ρ€ 7.

Π­Ρ‚ΠΈ дСйствия ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Β«ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ суммы ΠΌΠ΅ΠΆΠ΄Ρƒ счСтами», ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ. Если ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² сСрСдинС, ΠΈ Π½Π΅ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС измСнСния, Π»Π΅Π³ΠΊΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° счёта Π½ΠΎΠΌΠ΅Ρ€ 5 Π±Π΅Π· 10 Π΅Π΄ΠΈΠ½ΠΈΡ†, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²Π»Π°Π΄Π΅Π»Π΅Ρ† счСта Π½ΠΎΠΌΠ΅Ρ€ 7 ΠΈΡ… Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚.

Основная ΡΡ‚Π°Ρ‚ΡŒΡ: ACID

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых Π½Π°Π±ΠΎΡ€ΠΎΠ² Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ транзакциям ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ систСмам являСтся Π½Π°Π±ΠΎΡ€ ACID (Atomicity, Consistency, Isolation, Durability). ВрСбования ACID Π±Ρ‹Π»ΠΈ Π² основном сформулированы Π² ΠΊΠΎΠ½Ρ†Π΅ 1970-Ρ… Π³ΠΎΠ΄ΠΎΠ² Π”ΠΆΠΈΠΌΠΎΠΌ Π“Ρ€Π΅Π΅ΠΌ[1]. ВмСстС с Ρ‚Π΅ΠΌ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ спСциализированныС систСмы с ослаблСнными Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ свойствами[2].

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ создавалась иллюзия, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” СдинствСнный. Однако Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎ сообраТСниям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ для выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π‘Π£Π‘Π” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Π£Ρ€ΠΎΠ²Π½ΠΈ описаны Π² порядкС увСличСния изолированности Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ, соотвСтствСнно, надёТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

  • 0 β€” Π§Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅) (Read Uncommitted, Dirty Read) β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ нСзафиксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ своСй Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. НСт Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ транзакциями, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΡ… ΠΎΡ‚ΠΊΠ°Ρ‚Π°, поэтому Ρ‚Π°ΠΊΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ являСтся ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ источником ошибок. НСвозмоТны потСрянныС измСнСния (lost changes), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, нСповторяСмоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Ρ„Π°Π½Ρ‚ΠΎΠΌΡ‹.
  • 1 β€” Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Read Committed) β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ своСй Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ зафиксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ΠŸΠΎΡ‚Π΅Ρ€ΡΠ½Π½Ρ‹Π΅ измСнСния ΠΈ грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ допускаСтся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСповторяСмоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Ρ„Π°Π½Ρ‚ΠΎΠΌΡ‹.
  • 2 β€” ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Repeatable Read, Snapshot) β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ своСй Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π»ΡŽΠ±Ρ‹Π΅ измСнСния, внСсённыС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ транзакциями послС Π½Π°Ρ‡Π°Π»Π° своСй, нСдоступны. ΠŸΠΎΡ‚Π΅Ρ€ΡΠ½Π½Ρ‹Π΅ измСнСния, грязноС ΠΈ нСповторяСмоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ„Π°Π½Ρ‚ΠΎΠΌΡ‹.
  • 3 β€” Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ (Serializable) β€” сСриализуСмыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния сСриализуСмой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ транзакциями Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ логичСски эквивалСнтСн Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΈΡ… ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ синхронизации Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚.

Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции, Ρ‚Π΅ΠΌ большС трСбуСтся рСсурсов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ. БоотвСтствСнно, ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ изолированности ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ сниТСнию скорости выполнСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ являСтся Β«ΠΏΠ»Π°Ρ‚ΠΎΠΉΒ» Π·Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ надёТности.

Π’ Π‘Π£Π‘Π” ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ для всСх Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ сразу, Ρ‚Π°ΠΊ ΠΈ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ 1 (Read Committed). Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² основном для отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ для чтСния Ρ€Π΅Π΄ΠΊΠΎ измСняСмых Π΄Π°Π½Π½Ρ‹Ρ…. Π£Ρ€ΠΎΠ²Π½ΠΈ 2 ΠΈ 3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Ρ… трСбованиях ΠΊ изолированности Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Π°Ρ рСализация ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ изоляции ΠΈ свойств ACID прСдставляСт собой Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ самих Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‚Π°ΠΊ ΠΈ индСксов. Π­Ρ‚ΠΈ измСнСния ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ: Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ мСсто Π½Π° дискС, опСрация Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (timeout) ΠΈ Ρ‚. Π΄. БистСма Π΄ΠΎΠ»ΠΆΠ½Π° Π² случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² состояниС Π΄ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ коммСрчСскиС Π‘Π£Π‘Π” (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, IBM DB2), пользовались ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ для обСспСчСния свойств ACID. Но большоС количСство Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сущСствСнному ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π•ΡΡ‚ΡŒ Π΄Π²Π° популярных сСмСйства Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ количСство Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ:

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ расставлСны Π½Π° всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая обновляСтся. Π’ зависимости ΠΎΡ‚ уровня изоляции ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ записи Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ.

ΠŸΡ€ΠΈ ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ ΠΆΡƒΡ€Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² Sybase ΠΈ MS SQL Server Π΄ΠΎ вСрсии 2005, всС измСнСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΆΡƒΡ€Π½Π°Π», ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ β€” Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ позволяСт Π‘Π£Π‘Π” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ состояниС послС Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ падСния систСмы. Π’Π΅Π½Π΅Π²Ρ‹Π΅ страницы содСрТат ΠΊΠΎΠΏΠΈΠΈ Ρ‚Π΅Ρ… страниц Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… происходят измСнСния. Π­Ρ‚ΠΈ ΠΊΠΎΠΏΠΈΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π₯отя Ρ‚Π΅Π½Π΅Π²Ρ‹Π΅ страницы Π»Π΅Π³Ρ‡Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ, ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π°Ρ Турнализация Π±ΠΎΠ»Π΅Π΅ эффСктивна[4].

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ появлСнию Π±Π΅Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ИдСя контроля Π½Π°Π΄ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ доступом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ (timestamp-based concurrency control) Π±Ρ‹Π»Π° Ρ€Π°Π·Π²ΠΈΡ‚Π° ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ появлСнию многовСрсионной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ MVCC. Π­Ρ‚ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½ΠΈ Π² ΠΆΡƒΡ€Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΈ Π² Ρ‚Π΅Π½Π΅Π²Ρ‹Ρ… страницах. АрхитСктура, рСализованная Π² Oracle 7.Ρ… ΠΈ Π²Ρ‹ΡˆΠ΅, записываСт старыС вСрсии страниц Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСгмСнт ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Π½ΠΎ ΠΎΠ½ΠΈ всС Π΅Ρ‰Ρ‘ доступны для чтСния. Если транзакция ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° страницу, врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΠΎΠ²Π΅Π΅ Π½Π°Ρ‡Π°Π»Π° чтСния, Π΄Π°Π½Π½Ρ‹Π΅ бСрутся ΠΈΠ· сСгмСнта ΠΎΡ‚ΠΊΠ°Ρ‚Π° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ «старая» вСрсия). Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ вСдётся ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Β«ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ ΠΆΡƒΡ€Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΒ», ΠΎΠ½ Π½Π΅ содСрТит Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π±ΠΎΡ‚Π° с Π½ΠΈΠΌ состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… логичСских шагов:

  1. Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ произвСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
  2. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅, копируя ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρ‹ измСняСмых страниц Π² сСгмСнт ΠΎΡ‚ΠΊΠ°Ρ‚Π°
  3. Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всё сдСлано Π±Π΅Π· ошибок

Π–ΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сочСтании с сСгмСнтом ΠΎΡ‚ΠΊΠ°Ρ‚Π° (ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится копия всСх измСняСмых Π² Ρ…ΠΎΠ΄Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…) Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ случаС сбоя запускаСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° восстановлСния, которая просматриваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΅Π³ΠΎ записи ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • Если ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π° запись, Ρ‚ΠΎ сбой ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» Π²ΠΎ врСмя проставлСния ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅. Π—Π½Π°Ρ‡ΠΈΡ‚, Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΠ»ΠΎΡΡŒ, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ.
  • Если всС записи ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅, Ρ‚ΠΎ сбой ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» ΠΌΠ΅ΠΆΠ΄Ρƒ транзакциями, здСсь Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ.
  • Если Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Π°Ρ транзакция, Ρ‚ΠΎ сбой ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» Π²ΠΎ врСмя записи Π½Π° диск. Π’ этом случаС ΠΌΡ‹ восстанавливаСм ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· сСгмСнта ΠΎΡ‚ΠΊΠ°Ρ‚Π°.

Firebird Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈ ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΈ сСгмСнта ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ MVCC, записывая Π½ΠΎΠ²Ρ‹Π΅ вСрсии строк Ρ‚Π°Π±Π»ΠΈΡ† прямо Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ пространство Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ ΠΆΠ΅ поступаСт MS SQL 2005. ВСорСтичСски это Π΄Π°Ρ‘Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ†Π΅Π½ΠΎΠΉ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ «сборки мусора», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ удалСния старых ΠΈ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… вСрсий Π΄Π°Π½Π½Ρ‹Ρ….

  1. ↑ Gray, Jim. The Transaction Concept: Virtues and Limitations. Proceedings of the 7th International Conference on Very Large Databases: pages 144β€”154, 1981 (Π°Π½Π³Π».)
  2. ↑ Advanced Transaction Models and Architectures (Π°Π½Π³Π».)
  3. ↑ БСмСйство Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ARIES Архивировано 20 ΡΠ΅Π½Ρ‚ября 2008 Π³ΠΎΠ΄Π°.
  4. ↑ Gray, J., McJones, P., Blasgen, M., Lindsay, B., Lorie, R., Price, T., Putzolu, F., and Traiger, I. The recovery manager of the System R database manager. ACM Comput. Surv. 13, 2 (June 1981).

SQL β€” Вранзакция | ИВ Π‘Π»ΠΎΠ³. АдминистрированиС сСрвСров Π½Π° основС Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ мноТСство SQL запросов Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ…, ΠΈ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… всС вмСстС, ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Бвойства Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ стандартных свойств, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ACID.

  • Atomicity – Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, транзакция прСрываСтся Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· строя , ΠΈ всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ состояниС.
  • Consistency – Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ измСняСт состояния Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  • Isolation – позволяСт Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.
  • Durability – Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ»ΠΈ эффСкт зафиксированной Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ сохраняСтся Π² случаС сбоя систСмы.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для управлСния опСрациями.

  • COMMIT – для сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • ROLLBACK – ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • SAVEPOINT – создаСт Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ.
  • SET TRANSACTION – Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ имя Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ управлСния транзакциями

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ управлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ DML, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ – INSERT, UPDATE ΠΈ DELETE. Они Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ автоматичСски Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Команда COMMIT

Команда COMMIT являСтся Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ транзакциями Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Команда COMMIT сохраняСт всС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго COMMIT ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ROLLBACK.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ COMMIT выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

COMMIT;

 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ΄Π°Π»ΠΈΡ‚ эти записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ возраст = 34, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

SQL> DELETE FROM CUSTOMERS
   WHERE AGE = 34;
SQL> COMMIT;

 

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π²Π΅ строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SELECT ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
+----+----------+-----+-----------+----------+

Команда ROLLBACK

Команда ROLLBACK являСтся Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ сохранСны Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚ΠΊΠ°Ρ‚Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ послС послСдних ΠΊΠΎΠΌΠ°Π½Π΄ commit ΠΈΠ»ΠΈ rollback.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ROLLBACK выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ROLLBACK;

 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ΄Π°Π»ΠΈΡ‚ эти записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ возраст = 34, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΠΌ измСнСния Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

SQL> DELETE FROM CUSTOMERS
   WHERE AGE = 34;
SQL> ROLLBACK;

 

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, опСрация удалСния Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SELECT ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

Команда SAVEPOINT

SAVEPOINT ΡΡ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π· ΠΎΡ‚ΠΊΠ°Ρ‚Π° всСх Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SAVEPOINT являСтся Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

SAVEPOINT SAVEPOINT_NAME;

 

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° слуТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² создании SAVEPOINT срСди всСх Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… заявлСний. Команда ROLLBACK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Бинтаксис для ΠΎΡ‚ΠΊΠ°Ρ‚Π° SAVEPOINT являСтся Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ROLLBACK TO SAVEPOINT_NAME;

 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Customers. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ SAVEPOINT ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ SAVEPOINT Π² любоС врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² исходноС состояниС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° содСрТит ряд ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

SQL> SAVEPOINT SP1;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
1 row deleted.

 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ удалСния ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΊ SAVEPOINT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ SP2. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ SP2 Π±Ρ‹Π»Π° создана послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ удалСния, Π΄Π²Π° послСдних ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ:

SQL> ROLLBACK TO SP2;
Rollback complete.

 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ мСсто, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ ΠΊ SP2.

SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+
6 rows selected.

 

Команда RELEASE SAVEPOINT

Команда RELEASE SAVEPOINT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния SAVEPOINT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создали.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ RELEASE SAVEPOINT выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

RELEASE SAVEPOINT SAVEPOINT_NAME;

 

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ SAVEPOINT Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½, Π²Ρ‹ большС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ROLLBACK, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго SAVEPOINT.

Команда SET TRANSACTION

Команда SET TRANSACTION ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для инициирования Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния характСристик для Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, которая слСдуСт. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΈΠ»ΠΈ чтСния ΠΈ записи.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SET TRANSACTION выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

SET TRANSACTION [ READ WRITE | READ ONLY ];

SQL - ВранзакцияSQL - Вранзакция

Если Π²Ρ‹ нашли ΠΎΡˆΠΈΠ±ΠΊΡƒ, поТалуйста, Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl+Enter.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *