Database/SQL

Repeatable Read + ๋น„๊ด€๋ฝ vs. SERIALIZABLE์˜ ์ฐจ์ด์ ์ด ๋ญ˜๊นŒ?

์ฑ”๐Ÿป 2024. 2. 9. 20:39

๐Ÿ‘€ย ์˜๋ฌธ์ 

๋˜ ํ•˜๋‚˜ ๋“  ์˜๋ฌธ์ .

์ฃผ๋ฌธ ์žฌ๊ณ ๊ฐ€ ๋งˆ์ด๋„ˆ์Šค๊ฐ€ ๋˜๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋น„๊ด€์  ๋ฝ์„ ์ ์šฉํ•ด ํ•ด๊ฒฐํ•˜์˜€๋‹ค. SELECT FOR UPDATE๋ฅผ ์ ์šฉํ•œ ๋ถ€๋ถ„์€ ์žฌ๊ณ ์ˆ˜๋Ÿ‰์„ ์กฐํšŒํ•ด์˜ค๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์žฌ๊ณ ์ˆ˜๋Ÿ‰์„ ์กฐํšŒํ•˜๋Š” ๋ถ€๋ถ„์€ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์— ํ•ด๋‹นํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์ด ๋๋‚˜์•ผ ๋ฝ์ด ํ’€๋ฆฌ๊ฒŒ ๋ ํ…๋ฐ ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ๋ชจ๋“  ๊ฑธ ์ง๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” Serializable๊ณผ ๋ณ„๋ฐ˜ ๋‹ค๋ฅผ ๋ฐ”๊ฐ€ ์—†๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€?ํ•˜๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.


Serializable ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ๋ชจ๋“  ๊ฑธ ์ˆœ์ฐจ์ ์œผ๋กœ, ์ง๋ ฌ๋กœ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ์ง€ ์ฝ๊ธฐ ์‹œ S-Lock์„ ๊ฑด๋‹ค๋Š” ๊ฑด ์ด๋ฒˆ์— ์กฐ์‚ฌํ•˜๋ฉด์„œ ์ฒ˜์Œ ์•Œ์•˜๋‹ค.

์ œ์ผ ํฐ ์ฐจ์ด์ ์€ repeatable read๋Š” ์กฐํšŒ ์‹œ s-lock์„ ์•ˆ ๊ฑธ๊ณ , serializable์€ ๋ฝ์„ ๊ฑด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ Repeatable Read ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ๋Š” ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, Serializabel ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ๋Š” ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์ด ํ•œ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ•์ œ๋กœ ๋กค๋ฐฑ์‹œ์ผœ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Š” ๊ฒฐ๊ตญ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง€๋ฉฐ, ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ, ์ง๋ ฌ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋™์‹œ์„ฑ์ด ํฌ๊ฒŒ ์ €ํ•˜๋œ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, Repeatable Read๋Š” ์ฝ๊ธฐ ์ž‘์—…์— ์ž ๊ธˆ์„ ์ ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, Serializable์€ ์ฝ๊ธฐ์—๋„ S-Lock์„ ์ ์šฉํ•˜์—ฌ, ๋ชจ๋“  ์ž‘์—…์„ ์ง๋ ฌ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๋™์‹œ์„ฑ์ด ํฌ๊ฒŒ ๋–จ์–ด์ง€๊ณ  ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

โž•ย ์ฐธ๊ณ  ๊ฒŒ์‹œ๋ฌผ

SERIALIZABLE์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ?
๐Ÿ‘€์˜๋ฌธ์ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ serializable ๋ฐ๋“œ๋ฝ ์‹œ๋‚˜๋ฆฌ์˜คโ“ ์›์ธ ์ถ”๋ก  & ํ•ด๊ฒฐ์ฑ… ์‹œ๋„โœ”๊ฒฐ๋ก (Serializable์—์„œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ )๊ต์ฐฉ์ƒํƒœ(Deadlock, ๋ฐ๋“œ๋ฝ)์ด๋ž€?S-Lock๊ณผ X-LockSerializable ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ์˜ ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์‹œ๋‚˜๋ฆฌ์˜ค๐Ÿ”œ ๋‚˜๊ฐ€๋ฉฐRef ์•„๋ž˜๋Š” ์ €์˜ ์‚ฝ์งˆ ๊ณผ์ •์ด ์ ํ˜€์ ธ์žˆ์œผ๋‹ˆ ๊ฒฐ๋ก ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์•„๋ž˜๋กœ ๊ฐ€์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ‘€์˜๋ฌธ์ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด Isolation Level Serializable์„ ์ ์šฉํ•˜๊ณ  ์žฌ๊ณ  499๊ฐœ ์ƒํƒœ์—์„œ 100๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ 5๊ฐœ ์ƒํ’ˆ์— ๋Œ€ํ•œ ์ด 500๊ฐœ์˜ ์ฃผ๋ฌธ์„ ์‹œ๋„๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค.์ด ํ…Œ์ŠคํŠธ๋กœ Serializable ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—์„œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์ฒ˜์Œ ์•Œ์•˜๋‹ค.๋‚˜๋Š” Serializa..
https://beppp.tistory.com/124

Uploaded by N2T