ΠΠ°ΠΊΠΈΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π±ΡΠ²Π°ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ?
ΠΠ·ΠΎΠ»ΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π²ΠΈΠ΄ΠΈΡ ΠΈΠ· ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ; ΡΡΠΎΠ²Π½ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ β Π³ΡΡΠ·Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π½ΡΠΎΠΌΡ. Π PostgreSQL Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ MVCC Π³ΡΡΠ·Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ Π½Π΅Ρ Π½ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΈ: READ COMMITTED (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) Π±Π΅ΡΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π½Π΅ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π½ΡΠΎΠΌΡ; REPEATABLE READ Π΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠΌΠΎΠΊ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π½ΠΎ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ; SERIALIZABLE Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ write skew. ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠΈΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Π½Π΅ ΡΠΏΠ°ΡΡΡ β Π½ΡΠΆΠ΅Π½ SELECT FOR UPDATE, Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΉ UPDATE ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΡ ΡΡΡΠΎΠΊΠΈ. Π Π½Π°ΡΠΈΠ½Π°Ρ Ρ REPEATABLE READ Π½ΡΠΆΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΠ°.