1.3 How to Test Serializability
Testing for Conflict Serializability
Precedence Graph Example 1
์ค์ผ์ค์ ๋ํ ์ ํ ๊ทธ๋ํ๋ฅผ ์์ฑํ ์์ ์ด๋ค. ์ ํ ๊ทธ๋ํ์ ์ฌ์ดํด์ด ์์ผ๋ฏ๋ก ํด๋น ์ค์ผ์ค์ ์ถฉ๋ ์ง๋ ฌ๊ฐ๋ฅ ์ค์ผ์ค์ด ์๋๋ค.
Precedence Graph Example 2
์ ํ ๊ทธ๋ํ์ ๋ํ ์ฐ๋ฆฌ์ ๊ด์ฌ์ ์ฌ์ดํด ์กด์ฌ ์ฌ๋ถ์ด๋ฏ๋ก, ์ค๋ณต๋๋ ์ฃ์ง๋ ๊ทธ๋ํ ์์ฑ ์์ ํ๊ธฐํ์ง ์์๋ ๋๋ค.
์ค์ผ์ค์ ์ํ ์ ํ ๊ทธ๋ํ์๋ ์ฌ์ดํด์ด ์์ผ๋ฏ๋ก ํด๋น ์ค์ผ์ค์ ์ถฉ๋ ์ง๋ ฌ๊ฐ๋ฅ ์ค์ผ์ค์ด๋ค.
Cycle detection in precedence graphs is cheap
T5 -> T1 -> T3 -> T2 -> T4
์ ํ ๊ทธ๋ํ๋ ๋ฐฉํฅ์ฑ ๊ทธ๋ํ์ด๋ฉฐ, ๋ฐฉํฅ์ฑ ๊ทธ๋ํ์์ ์ฌ์ดํด ์กด์ฌ ์ฌ๋ถ ํ๋ณ์ ๊ฐ๋จํ๊ณ ์ ๋ ดํ ์ฐ์ฐ์ด๋ค.
์์ ์ ๋ ฌ(topological sort)์ ๋ถ๋ถ ์์๋ฅผ ๊ฐ์ง๋ ๋ ธ๋(ํธ๋์ญ์ )์ ๋ํ์ฌ ๋ถ๋ถ ์์๋ฅผ ๋ง์กฑํ๋ฉด์ ์ ์ฒด ๋ ธ๋๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ์์ด๋ค. ์ค์ผ์ค 11 ์ ํ ๊ทธ๋ํ์๋ ์ด 5๊ฐ์ ๋ ธ๋๊ฐ ์์ผ๋ฉฐ ๋ ธ๋ ๊ฐ์๋ ๋ถ๋ถ ์์๊ฐ ๊ฒฐ์ ๋์ด ์๋ค. ์ค์ผ์ค 11 ์ ํ ๊ทธ๋ํ์ ๋ํ์ฌ ์์ ์ ๋ ฌ์ ํ๋ฉด T2, T3 ๊ฐ์๋ ์์๊ฐ ์์ผ๋ฏ๋ก 2๊ฐ ์ ๋ ฌ์ด ๋์ค๊ณ ๋ํ T5๋ ๋ค๋ฅธ ๋ ธ๋์ ์์๊ฐ ์์ผ๋ฏ๋ก 5๊ฐ์ง ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ด 10๊ฐ์ ์์์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
- T1 T2 T3 T4 T5 - T1 T2 T3 T5 T4
- T1 T2 T5 T3 T4 - T1 T5 T2 T3 T4
- T5 T1 T2 T3 T4 - T1 T3 T2 T4 T5
- T1 T3 T2 T5 T4 - T1 T3 T5 T2 T4
- T1 T5 T3 T2 T4 - T5 T1 T3 T2 T4
<T1,T2,T3,T4> T5 => T5๊ฐ 1,2,3,4์ ์ ํ๋ก ๋ค์ด๊ฐ ๊ฒฝ์ฐ 5๊ฐ์ง
<T1,T3,T2,T4> 5 => T5๊ฐ 1,2,3,4์ ์ ํ๋ก ๋ค์ด๊ฐ ๊ฒฝ์ฐ 5๊ฐ์ง
์ด 10๊ฐ์ง ์ง๋ ฌ ์ค์ผ์ค