ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ Π² mysql
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ InnoDB Π² MySQL
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉ, Π₯Π°Π±Ρ!
ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²ΡΠ΅ΠΌ ΠΆΠ΅Π»Π°ΡΡΠΈΠΌ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π½Π°ΡΡ ΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π΄Π²ΠΈΠΆΠΊΠ° InnoDB Π² MySQL.

ΠΠΠΠ: deadlock Π² ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΎΠΏΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΠ½Ρ
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ
ΠΡΠ΅, Π΄ΡΠΌΠ°Ρ, ΡΠΆΠ΅ Π·Π½Π°ΡΡ, ΡΡΠΎ InnoDB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠΏΠ°Π²ΡΠΈΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ Π²ΡΠ±ΠΎΡΠΊΡ, ΡΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² REPEATABLE READ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠΌΠ½ΠΈ, %username%, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π½Π°ΠΏΡΡΠΌΡΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΡΠ»ΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π½Π° ΡΡΡΠΎΠΊΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΆΠ΄Π΅Ρ ΡΠ½ΡΡΠΈΡ ΠΌΠ΅ΡΠ°ΡΡΠ΅ΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΆΠ΄Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ, ΡΡΠΎ deadlock. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ MySQL Π΅ΡΡΡ ΠΏΠ°ΡΠ° ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ InnoDB Π½Π΅ΡΠ²Π½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ».
Π ΡΠΎΠΌ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡΠΎΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠΏΡΡΡ ΠΆΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΡΠΎΠ²Π½ΡΠΌ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ (consistent read).
Π ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ½ΡΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ
ΠΠ (Ρ.Π½. read view), Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π²Π»ΠΈΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ
, Π½ΠΎ Π²Π»ΠΈΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ. Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ½ΡΠΏΡΠΎΡΠ° Π½Π°Π·ΡΠ²Π°ΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ½ΡΠΏΡΠΎΡΠ° Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π²Π΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΡΠ°ΠΊΠ»ΠΈΠ·ΠΌΡ Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠ΅ (ΠΊΡΠΎΠΌΠ΅ DROP TABLE ΠΈ ALTER TABLE) Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΡΡΡΠ½ΡΠΉ ΠΌΠΈΡΠΎΠΊ ΡΠ½ΡΠΏΡΠΎΡΠ°. InnoDB ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΡΠΏΡΠΎΡ ΠΈ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β START TRANSACTION WITH CONSISTENT SNAPSHOT.
Π£ΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ InnoDB
Π£ΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠΌ SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL.
REPEATABLE READ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ)
READ COMMITED
READ UNCOMMITED (ΡΠ°ΠΌΡΠΉ ΡΠ»Π°Π±ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ)
SERIALIZABLE (ΡΠ°ΠΌΡΠΉ ΡΡΡΠΎΠ³ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ)
One more thing.
Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΠΏΠ°ΡΠ° ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ ΡΡΡΠΊ, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΡΡ.
SELECTβ¦ LOCK IN SHARE MODE β Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π° Π·Π°ΠΏΠΈΡΡ.
ΠΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΆΠ΄ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΡΡΠΎΠ½ΡΡΡΡ
ΡΡΡΠΎΠΊ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ SELECT’Π° ΡΡΡΠΎΠΊΠ° ΡΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ, Π½ΠΎ Π΅ΡΠ΅ Π½Π΅ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠΎ Π·Π°ΠΏΡΠΎΡ ΠΆΠ΄Π΅Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠΈΡΠ°Π΅Ρ ΡΠ²Π΅ΠΆΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π½ΡΠΆΠ½Π°, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΠΆΠ°ΠΉΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ) ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡ
Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ.
SELECTβ¦ FOR UPDATE β Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΡΡ ΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ°Π²ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΠΉ UPDATE, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠΈΡΠ°ΡΡ ΡΠΆΠ΅ Π½Π΅ ΠΈΠ· ΡΠ½ΡΠΏΡΠΎΡΠ°, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ SELECT, Ρ.Π΅. ΠΎΠ½ΠΈ ΡΠ²ΠΈΠ΄ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΊΡΡΠ΅ΠΉ. Π’Π°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ InnoDB ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΡΠΎΠΊΠΈ, Π° Π² ΡΠ½ΡΠΏΡΠΎΡΠ΅ ΠΎΠ½Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΡΠΈΡΠ°ΡΡ β ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ β Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΎ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΡ ΠΆΠ΅ Π·Π°ΡΠ΅ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. LOCK IN SHARE MODE Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π΅ Π΄Π°ΡΡ Π²ΠΊΠ»ΠΈΠ½ΠΈΡΡΡΡ ΡΠΎΡΠ΅Π΄Π½Π΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π΅ΠΉ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π²ΠΈΡΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ, Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π΄Π²Π΅, ΡΠΎ Π΅ΡΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π½Ρ ΠΏΡΠΎΡΠΊΠΎΡΠΈΡΡ ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΈ Π²ΡΠ·Π²Π°ΡΡ deadlock.
ΠΡΠ»ΠΈΡΠΈΠ΅ FOR UPDATE Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΡΠ°Π·Ρ ΡΡΠ°Π²ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, ΡΠ°ΠΊΡΡ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ UPDATE. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΠΈΡΠ°ΡΡ β ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ β Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π²ΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ½ΠΈΠ·ΠΈΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠ΅Π΄Π»ΠΎΠΊΠΈ Π² SQL Server β ΡΠ°ΡΡΡ 3: ΠΠ΅ΠΉΡΡΠ°Π»ΠΈΠ·ΡΠ΅ΠΌ Π²ΡΠ°Π³Π°
ΠΠΎΡΡΠ±Π° Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
Π Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΡΠΈΠΈ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ Π²ΠΈΠ΄Π°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌΠΈ Π±ΠΎΡΠΎΡΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ .
ΠΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ
ΠΡΠ»ΠΈ Π²Π·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π²Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌ, Π½ΠΎ Π² ΡΠ°Π·Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ². Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π΅ΡΠ»ΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ², Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
Π ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ MS SQL ΡΡΠΎΡ ΡΠΎΠ²Π΅Ρ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠ°Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°Π·ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ , ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ, ΠΏΠ΅ΡΠ²ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π΅ΡΡΡ 2 ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΎΠΏΠ΅ΡΠΈΡΡΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
ΠΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΈΡ Π΄Π²ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Ρ.ΠΊ. ΠΎΠ±Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠΈΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ, Π½ΠΎ Π² ΡΠ°Π·Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΡΠ»ΠΈ Π±Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ Π±ΡΠ»ΠΎ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 2 Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π±Ρ, Ρ.ΠΊ. ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Update ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π°ΡΠΊΠ½Π΅ΡΡΡ Π½Π° ΡΠΆΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ ΡΠ΅ΡΡΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
ΠΠ° Π ΠΈΡ. 1 ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ° Π½Π΅ΠΌ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Ρ SPID=52 ΠΈ 54 Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ Ρ SPID=54, ΡΡΠ°Π» ΠΆΠ΅ΡΡΠ²ΠΎΠΉ.
ΠΠ° Π ΠΈΡ. 2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ 52 ΠΆΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° 54, Π° ΠΏΡΠΎΡΠ΅ΡΡ 54 ΠΆΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ 52.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
Π ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ»Ρ ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°Π»ΠΎΠΆΠ΅Π½Π° Π½Π° Π²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π° ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡ Π΅ΠΌΡ ΠΠ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° Students
Π’Π°Π±Π»ΠΈΡΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎ ΠΏΠΎΠ»Ρ Age.
ΠΠΎΠΏΡΡΡΠΈΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ 2 ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π½Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎ ΠΏΠΎΠ»Ρ Age, ΡΠΎ Π΄Π²Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°.
ΠΠ° Π ΠΈΡ. 4 Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Π΄Π²Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° (SPID 52 ΠΈ 54) Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ (SPID 54) ΡΡΠ°Π»Π° ΠΆΠ΅ΡΡΠ²ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠ° Π ΠΈΡ. 5 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π²Π·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² 52 ΠΈ 54.
ΠΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Exclusive
ΠΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΠΌΠ°Ρ Π²Π·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Repeatable read ΠΈΠ»ΠΈ Serializable ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 1 ΡΠΈΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΡ (Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ S-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°).
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 2 ΡΠΈΡΠ°Π΅Ρ ΡΡΡ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ (Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π²ΡΠΎΡΠ°Ρ S-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°).
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 1 ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ ΠΈ ΠΆΠ΄Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 2 Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΈ ΠΎΡΠΏΡΡΡΠΈΡ ΡΠ²ΠΎΡ S-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, ΡΡΠΎΠ±Ρ Π½Π°Π»ΠΎΠΆΠΈΡΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ.
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 2 ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ ΠΈ ΠΆΠ΄Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ 1 Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΈ ΠΎΡΠΏΡΡΡΠΈΡ ΡΠ²ΠΎΡ S-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, ΡΡΠΎΠ±Ρ Π½Π°Π»ΠΎΠΆΠΈΡΡ ΡΠΆΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ²ΠΎΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ.
ΠΠ»Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΡΡΡΡΡ Π΄Π²Π΅ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ (Π²ΡΠ·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ /ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ ). ΠΠΎΡΡΠ±Π° ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π° ΠΎΠ΄Π½Ρ Π·Π°ΠΏΠΈΡΡ, Π½ΠΎ ΠΈ Π·Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΄Π²Π΅ Serializable ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΠΈΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠΎ ΡΠ΅ΡΡΡΡΠΎΠΌ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΠΆΠ΄ΡΡ, Π±ΡΠ΄Π΅Ρ ΠΊΠ»ΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ UPDLOCK Π½Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
ΠΠ° Π ΠΈΡ. 6 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π²ΠΎΠ·Π½ΠΈΠΊΡΠ°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°. ΠΠ° Π ΠΈΡ. 7 ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ S Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² 52 ΠΈ 53 Π±ΡΠ»Π° ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² X Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ. ΠΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ, Ρ.ΠΊ. ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ Π΄ΡΡΠ³ΠΎΠΌ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ
ΠΡΠ»ΠΈ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Serializable ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΈ ΡΡΠ° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡ), ΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½Π° shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² Π±Π°Π·Π΅ Π΅ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΈ (Id β ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅), ΠΈ Π½Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ, ΡΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ
Π±ΡΠ΄Π΅Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½Π° Shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΠΊΠ»ΡΡΠΈ Ρ 15 Π΄ΠΎ 1025. ΠΡΠ»ΠΈ Π΄ΠΎ Π²ΡΡΠ°Π²ΠΊΠΈ Π΄ΡΡΠ³Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ, Π΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΈ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π΅Π³ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ, ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ Π²Π·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Π²ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ UPDLOCK:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° SELECT, Π±ΡΠ΄Π΅ΠΌ ΠΆΠ΄Π°ΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π°Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΠΎΠ²ΡΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ. Π ΡΠ»ΠΎΠΆΠ½ΡΡ , ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ , Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΠ, Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΈΠ΅. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΡΠΊΠ°ΡΠ΅Π½Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΡΠΌΠ΅ΡΠΈΠΌ Π΅ΡΠ΅ ΡΠ°Π·, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π³ΠΎΠ΄Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ , ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ . ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
ΠΠ΅ΡΠΎΠ΄ΠΎΠΌ DoActionWithRetryAfterDeadlock ΠΌΡ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π»ΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ. Π ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, MS SQL Server ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΎΠ½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ Π½Π° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ , ΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠ΅ SQL Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ΄Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΠ, ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠΈΠ½ΡΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΡΡ, ΠΌΡ Π²Π²Π΅Π»ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π°Π»Π΅Π΅.
Π‘Π±ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π°ΠΊΡΠΈΠΈ Π½Π° Π½ΠΈΡ . Π Π½Π°ΡΠ΅ΠΌ ΠΠ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² Windows ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ:
β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΡ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ;
β ΡΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΡΡΠΈΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° TotalOperationDeadlockRetries, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠ»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ»ΠΎΡ ΠΠ, Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΠ:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΡΠΈΠΊΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠ»Π΅Π΄ΠΈΠΌ Π·Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΡΠ΅ΠΌ Π½Π° ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌΠΈ Π±ΠΎΡΠΎΡΡΡΡ:
β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ;
β Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ;
β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ UPDLOCK ΠΏΡΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Exclusive.
ΠΡΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΠΈΠ»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΡ Π΅ΠΌΡ ΠΠ, ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΠΊ ΠΏΠΎΠ²ΡΠΎΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΡΠΎ ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈ Π΅Ρ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π½Π΅ ΡΡΠΎΠΈΡ.
Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ ΠΎ ΡΠ±ΠΎΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊ β Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΡΠ»Π΅ΡΠ»ΠΎΠ²ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π² ΠΠ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠΈΠΌ ΡΠ΅ΡΠ°Π»ΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌΠΈ Π±ΠΎΡΠΎΡΡΡΡ.
Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ, ΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ ΠΠ°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΈ Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ.
ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ: ΠΠΈΠΊΠΎΠ»Π°ΠΉ ΠΠ²Π°Π½ΠΎΠ², Π‘ΡΠ°ΡΡΠΈΠΉ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ITA Labs
[ΠΠΎΠ½ΡΠΏΠ΅ΠΊΡ] ΠΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² MySQL
Oct 4, 2018 β’ zinvapel
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Ρ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ Π² MySQL.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
Π’ΠΈΠΏΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² InnoDB:
InnoDB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠΏΠ°Π²ΡΠΈΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ Π²ΡΠ±ΠΎΡΠΊΡ, ΡΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² REPEATABLE READ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΡΡΡ Π΄Π²Π° Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ:
ΠΡΠ»ΠΈ ΠΊΠΎΠΏΠ½ΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅, ΡΠΎ Π²ΡΡΡΠ½ΠΈΡΡΡ, ΡΡΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ 2 ΡΠΈΠΏΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, Π½Π°Π·ΠΎΠ²Π΅ΠΌ ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ Β«ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡ Β». ΠΠ΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ Π²Π·ΡΡΡ ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΡ Π² InnoDB. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ intention shared ΠΈ intention exclusive ΡΠ²Π»ΡΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΈΠΏΠ° LOCK TABLE. ΠΠ°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ Π»ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΡ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΡΠΎΠΊΠΈ.
InnoDB Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π½Π° ΡΠ°ΠΌΠΈ ΡΡΡΠΎΠΊΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π° Π½Π° Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². Π’Π° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π½Π°:
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΎΠ² Π½ΡΠΆΠ½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°Π½ΡΠΎΠΌΠ½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠΎΡΠ΅Π΄Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΡΠΏΠ΅Π²Π°Π΅Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ Π² ΡΡΠΎΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½.
SELECTβ¦ LOCK IN SHARE MODE β Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π° Π·Π°ΠΏΠΈΡΡ.
ΠΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΆΠ΄ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΡΡΠΎΠ½ΡΡΡΡ ΡΡΡΠΎΠΊ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ SELECTβΠ° ΡΡΡΠΎΠΊΠ° ΡΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ, Π½ΠΎ Π΅ΡΠ΅ Π½Π΅ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠΎ Π·Π°ΠΏΡΠΎΡ ΠΆΠ΄Π΅Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠΈΡΠ°Π΅Ρ ΡΠ²Π΅ΠΆΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π½ΡΠΆΠ½Π°, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΠΆΠ°ΠΉΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ) ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ.
SELECTβ¦ FOR UPDATE β Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΡΡ ΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ°Π²ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΠΉ UPDATE, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΠ·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (deadlock) Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ. InnoDB ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΠΊΠ°ΡΠΎΠΌ ΡΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Ρ Π²Π°ΡΠΈΠ»Π° ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΡΡΠΎΠΊ (ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π»Π΅Π³ΠΊΠΎΡΡΠΈ ΠΎΡΠΊΠ°ΡΠ°). ΠΠ΅Π»ΡΠ·Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ Π±Π΅Π· ΠΎΡΠΊΠ°ΡΠ° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ.
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² MySQL
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈ Π½Π΅ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±Π»ΠΈΡΡ InnoDB ΠΈ MyISAM) Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠΎ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΡΠΎΡΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅, ΠΎΡΠΊΠ°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Π°Ρ Π½Π΅Π΄Π΅Π»ΠΈΠΌΠ°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π±ΡΠ»Π° Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°, Π»ΠΈΠ±ΠΎ ΠΎΡΠΌΠ΅Π½Π΅Π½Π°.
ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°.
ΠΡΠ΄ΡΡΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² Ρ ΠΎΠ΄Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π£ΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ:
Π£ΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ:
| ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ |
|---|---|---|
| READ UNCOMMITED | ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎ Π² ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. ΠΠ°ΡΠΈΡΠ° ΠΎΡ Lost Update. | Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π’1 Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΆΠ΅Π»Π°ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΆΠ΄ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π’1. |
| READ COMMITED | ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π·Π°ΡΠΈΡΠ° ΠΎΡ Π³ΡΡΠ·Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄ΡΡΠ³Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΠΈ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ . | Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π’1 ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΡΡΡΠΎΠΊ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π’1. ΠΡΠ»ΠΈ Π±ΡΠ΄ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΡΡΡΠΎΠΊ, ΡΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ Π±ΡΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π’1. |
| REPEATABLE READ | Π§ΠΈΡΠ°ΡΡΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Β«Π½Π΅ Π²ΠΈΠ΄ΠΈΡΒ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π΅Ρ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΡΠΈΡΠ°Π½Ρ. ΠΡΠΈ ΡΡΠΎΠΌ Π½ΠΈΠΊΠ°ΠΊΠ°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ, ΠΏΠΎΠΊΠ° ΡΠ° Π½Π΅ ΠΎΠΊΠΎΠ½ΡΠ΅Π½Π°. | Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π’1 Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΆΠ΅Π»Π°ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΆΠ΄ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π’1. |
| SERIALIZABLE | Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΡΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, ΠΊΠ°ΠΆΠ΄Π°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. | ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌ Π΄Π°Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. |
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ MySQL.
Π£ΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ InnoDB
ΠΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ
ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΒΠ»Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΏΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅Ρ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π² ΠΆΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΠ»Π³ΠΎΠ²Π΅ΡΠ΅Π½. ΠΡΠΎ ΡΠΎΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΒΠ½ΠΎ Π±ΡΡΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΠΆΡΡΠ½Π°Π» ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΠΏΠ΅ΒΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΠΈΡΠΊΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠ°Π·Π½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ . ΠΠΎΠ·ΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΠ°Π±Π»ΠΈΒΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅.
MVCC ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΠΉ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
InnoDB ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ MVCC, ΡΠΎΡ ΡΠ°Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π΄Π²Π° ΡΠΊΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠΎΠΊΠ° Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠ΅ΠΊ ΡΡΠΎΠΊ Π΅Π΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ (ΠΈΠ»ΠΈ ΠΎΠ½Π° Π±ΡΠ»Π° ΡΠ΄Π°Π»Π΅Π½Π°). ΠΠΌΠ΅ΡΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΡΡΡΠΎΠΊΠ° Ρ ΡΠ°Π½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Repeatable Read:
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎ Deadlock
ΠΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΏΠΎΡΡ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Deadlock
Π Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ InnoDB, Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΠΈΠ΄Π°
Β«Deadlock found when trying to get lock; try restarting transactionΒ»
ΠΠ»Π°Π²Π½ΠΎΠ΅ Π½Π΅ ΠΏΠ°Π½ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΠΈΠ΄Π΅ ΡΡΠΈΡ ΡΡΡΠ°ΡΠ½ΡΡ ΡΠ»ΠΎΠ², ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠΈΠΏΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
Π ΠΎΡΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Mysql ΠΏΡΠΎ ΡΠΈΠΏΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
ΠΡΡΡ 2 ΡΠΈΠΏΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ β Shared (S) ΠΈ Exclusive (X). ΠΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΏ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠΊΡΡΡΡΠ΅ ΡΡΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ, Π²ΡΠΎΡΠΎΠΉ β ΡΠΈΡΠ°ΡΡ, ΠΏΠΈΡΠ°ΡΡ, ΡΠ΄Π°Π»ΡΡΡ ΠΈ (ΠΎ ΡΠ΅ΠΌ ΡΠΊΡΠΎΠΌΠ½ΠΎ ΡΠΌΠΎΠ»ΡΠ°Π»ΠΈ) β ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΠΎΠ²Π½Ρ S
Π’Π°ΠΊ ΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 Π²Π»Π°Π΄Π΅Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΠΏΠ° S Π½Π° ΡΡΡΠΎΠΊΠ΅ r, ΡΠΎ Π΄ΡΡΠ³Π°Ρ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ2 ΠΌΠΎΠΆΠ΅Ρ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΏΠ° X Π½Π° ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π²ΡΠΎΡΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΈΡ ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ Π² ΡΡΠΎΡΠΎΠ½ΠΊΠ΅.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 Π²Π»Π°Π΄Π΅Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΠΏΠ° X Π½Π° ΡΡΡΠΎΠΊΠ΅ r, ΡΠΎ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ2 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΈ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΡΡΡ ΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, Π½ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠΎΠ²Π½Ρ S. ΠΠ½Π° ΠΎΠΏΡΡΡ ΡΠΈΡ ΠΎ ΠΈΠ΄Π΅Ρ ΠΈ ΠΆΠ΄Π΅Ρ ΠΏΠΎΠΊΠ° Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΡΡΡΠΎΠΊΡ.
ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ²ΠΎΠΈΡΡ: Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ S ΠΈ X β ΡΡΠΎ 2 ΡΠ°Π·Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° S, ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ X. ΠΡΠΎ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ.
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π΄Π΅Π΄Π»ΠΎΠΊΠ°ΠΌ. ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΌΠ°Ρ Ρ Π²ΡΡΡΠ΅ΡΠ°Π» Π²ΠΎΠΏΡΠΎΡΡ Β«ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡ deadlock Π² MysqlΒ». ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΡ Ρ Π½Π°Ρ ΠΈΠΌΠ΅ΡΡΡΡ Π² Π½Π°Π»ΠΈΡΠΈΠΈ: Π΄Π²Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΏΠ° S ΠΈ X ΠΈ ΡΡΡΠΎΠΊΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΠ°ΡΠΊΠΈΠΉ ΡΠ΅ΡΠ΅ΠΏΡ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ deadlock Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
1) Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ S ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ
2) Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ2 ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΏΠ° X ΠΈβ¦ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΆΠ΄Π°ΡΡ ΠΊΠΎΠ³Π΄Π° Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ S
3) Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΏΠ° X ΠΈβ¦ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΆΠ΄Π°ΡΡ ΠΊΠΎΠ³Π΄Π° Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ2 ΠΏΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΏΠ° X ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ Π΅Ρ
Π’ΡΡ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠΎΠ»ΡΠ·ΠΊΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈβ1 ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ X Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ S Π½Π° ΡΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠΎΠΊΠ΅. Π ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΎ ΠΎ ΡΠ΅ΠΌ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ
1) ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
X ΠΈ S ΡΡΠΎ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΡ
Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
2) ΠΠΎ-Π²ΡΠΎΡΡΡ
Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠΈΠΏΠ° S Π½Π΅ Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΏΠ° X. ΠΠΈΠΊΠ°ΠΊΠΈΡ
ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ β Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ!
ΠΠΎΠ΄ Π΄Π»Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅
ΠΠ°ΠΊ ΠΆΠ΅ Ρ ΡΡΠΈΠΌ Π±ΠΎΡΠΎΡΡΡΡ? ΠΡΡ. ΡΠ°ΠΉΡ Mysql ΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠΌΠΈΡΠΈΡΡΡΡ ΠΏΠΎΡΠ°ΡΠ΅, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΊΠ°ΡΠΈΠ²ΡΡΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ»ΡΡΡΠ΅ β ΡΡΠ°Π·Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΏΠ° X. Π’ΠΎΠ³Π΄Π° Π½Π° ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅ΠΏΡΠ° Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡβ1 ΡΠΌΠΎΠ³Π»Π° Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΡ Π·Π°ΠΊΠΎΠ½Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ
ΠΠ°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΡΠΊΠ°ΠΆΡ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ deadlock ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° SHOW ENGINE INNODB STATUS, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΠΎ Π΄Π΅ΡΠΆΠΈΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ
ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π‘Π£ΠΠ MySQL ‘ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ; ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΄Π΅Π»ΠΊΠΈ
Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° innoDB, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ½ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ, Π½Π° ΠΊΠ°ΠΊΠΈΡ ΡΡΡΠ°Π½ΠΈΡΠ°Ρ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ, ΠΈ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π΄Π°ΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΡΡ. ΠΠ°ΡΠ΅ΠΌ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ cron, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 15 ΠΌΠΈΠ½ΡΡ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» «ΡΡΠΏΠΈΠΊ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ; ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ» ΠΎΠΊΠΎΠ»ΠΎ 5 ΠΌΠΈΠ½ΡΡ ΠΏΡΠΎΡΠ»ΠΎΠΉ Π½ΠΎΡΡΡ, ΠΈ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π²ΡΡΠ°Π²ΠΎΠΊ Π² ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΠΆΠ΅Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°?
Π²ΠΎΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ:
ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΈΠ·ΠΈΡ Π½Π° ΡΠ°ΠΉΡ:
Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ:
Cron ΠΊΠ°ΠΆΠ΄ΡΠ΅ 15 ΠΌΠΈΠ½ΡΡ:
Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ΅ΡΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ (Ρ. Π΅.: ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΎΠ½Π»Π°ΠΉΠ½, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½).
6 ΠΎΡΠ²Π΅ΡΠΎΠ²:
ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎΠΌ ΡΡΠΏΠΈΠΊΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΏΠΈΠΊ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΡΡΠ°ΡΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΡ ΠΎΡΠ΄Π΅ΡΠ°Ρ , Ρ. Π΅.:
ΡΠ΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΈ Π·Π°ΠΏΡΠΎΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Ρ. Π΅.:
Π±ΡΠ΄Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΏΠΈΠΊ.
Π’Π°ΠΊ Π²ΠΎΡ ΡΡΠΎ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ:
ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π½Π΅Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΊΠ»ΡΡΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ delete. Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ (ΠΈ Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅), ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ ΠΈΡ Π³Π΄Π΅ Π² (k1, k2. kn) Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
ΠΈΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ delete Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ:
Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π²Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ mysql ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠΈΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΠΎΠΏΡΡΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄. (Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, 3 ΠΏΠΎΠΏΡΡΠΊΠΈ Π½Π° ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ΄Π°Π²Π°ΡΡΡΡ).
Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΆΠ΄ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ. ΠΡΠΈΠΌΠ΅Ρ:
Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Ρ . ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΡΠ°Π²ΠΈΡΡ/ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡΠΎΠΊΡ, Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅. ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Π³Π΄Π° Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄Π°ΠΆΠ΅ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅Π³Π΄Π° ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°Π±Π»ΠΈΡΠ° A, Π·Π°ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΈΡΠ° B).
Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° ΡΡΠΏΠΈΠΊΠ° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΡΡΡΠΎΠΊΠ° Π²ΡΡΠ°Π²Π»Π΅Π½Π°/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° / ΡΠ΄Π°Π»Π΅Π½Π°, Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠ»ΡΡΠΈ Π² ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ . ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π΄ΡΡΠ³ΠΎΠΌ Π·Π°ΠΌΠΊΠ΅ Π±ΡΡΡ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΎ, ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ°Ρ (ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ), ΠΈΠ½Π°ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΡΠΎΠΊΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°Π±Π»ΠΈΡΡ, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΡΠ΅ ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ.
Π΄Π»Ρ Π½Π°ΡΠ°Π»ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎΠΈΡ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠ°Π·Ρ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ delete. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΠΠΠΠΠΠΠ ΠΠΠΠ’Π¬ Π’ΠΠΠΠΠ¦Π« ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, ΡΡΠΎ delete ΡΠ°Π±ΠΎΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΊΠ»ΡΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, Π² Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠΎΠΌΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Ρ
ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ select Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ where ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΡΡΡΠΎΠΊΠΈ ΡΡΠ°ΡΡΠ΅ 900 ΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π°Π΄Π°Π½ΠΈΡ cron ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΡΡΠΎ.
ΡΠ΅ΠΎΡΠΈΡ ΠΎ ΡΡΠΏΠΈΠΊΠ°Ρ : Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΎΠ½Π° Π² MySQL, Π½ΠΎ Π·Π΄Π΅ΡΡ ΠΈΠ΄Π΅Ρ. ΠΠ»Π΅ΠΌΠ΅Π½Ρ delete Π±ΡΠ΄Π΅Ρ Π΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠ»ΡΡ-Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ datetime, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΡΠΎΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΅Π³ΠΎ where ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΠΎΠ½ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ. ΠΠ»Π΅ΠΌΠ΅Π½Ρ insert ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ»ΡΡ Π·Π°ΠΌΠΎΠΊ. ΠΠ±ΡΡΠ½ΠΎ insert Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²ΠΎ ΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΊΠ»ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠΈΠΊ, Π΅ΡΠ»ΠΈ delete ΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΡ ΠΆΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ insert ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ delete Π½ΡΠΆΠ½Π° ΡΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ insert Π½ΡΠΆΠ΅Π½ ΡΡΠΎΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Π·Π°ΠΌΠΎΠΊ. ΠΡΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΎΠΊ, Ρ ΠΎΡΡ, delete ΠΈ insert ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ datetime, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π°.
Π΄Π»Ρ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Spring, Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π» ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠΏΠ΅ΠΊΡ AOP, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΠ΅ ΡΡΠΏΠΈΠΊΠΈ.
ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ @RetryTransaction javadoc Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄, Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΠ½ΡΡΡ Π² MySqlTransaction.
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΠΏΠΈΠΊΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΡΠΈΠ» ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΡΠΎΠ±ΠΎΠΉ.
Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΄Π°Π»ΠΈΠ» MySqlTransaction, Ρ Π±ΡΠ» Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ, Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΏΠ°Π³Π°Π½Π΄ΠΈΡΡΡ.



















