Skip to content
4 / 15

КакиС ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹?

Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ опрСдСляСт, Ρ‡Ρ‚ΠΎ транзакция Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ· ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ; ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ β€” грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, нСповторяСмоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Ρ„Π°Π½Ρ‚ΠΎΠΌΡ‹. Π’ PostgreSQL благодаря MVCC грязного чтСния Π½Π΅Ρ‚ Π½ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Ρ€ΠΈ: READ COMMITTED (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π±Π΅Ρ€Ρ‘Ρ‚ снимок Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, поэтому Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСповторяСмоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Ρ„Π°Π½Ρ‚ΠΎΠΌΡ‹; REPEATABLE READ Π΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ снимок Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π½ΠΎ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ записи ΠΏΠ°Π΄Π°Π΅Ρ‚ с ошибкой сСриализации; SERIALIZABLE добавляСт Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ write skew. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ стоит потСрянноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, мСняСт Π΅Π³ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Π½Π΅ спасёт β€” Π½ΡƒΠΆΠ΅Π½ SELECT FOR UPDATE, Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹ΠΉ UPDATE ΠΈΠ»ΠΈ вСрсия строки. И начиная с REPEATABLE READ Π½ΡƒΠΆΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π°.

КакиС ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹? | JScriptiser