MySQL (4) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ '์คํ๊ณํ์์ ๋ฌด์์ ์ค์ํ๊ฒ ๋ณผ ๊ฒ์ธ๊ฐ?' - ๊ฐ์ธ์ ์ธ ํต์ฐฐ Real MySQL 8.0 10์ฅ ์คํ๊ณํ์ 150๋ง๊ฐ์ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ๊ณต๋ถํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค."์คํ ๊ณํ์ ์ด๋ป๊ฒ ์ฝ์ด์ผ ํ๋์ง, ๋ฌด์์ ์ฝ์ด์ผ ํ๋์ง?" ์ ๋ํด ์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ด ๋ค์ด๊ฐ์์ ๋ฐํ๋ฉฐ, ๋ถ์กฑํ ๋ถ๋ถ์ด ์์์ ๋ฏธ๋ฆฌ ์ํด ๊ตฌํฉ๋๋ค.1. ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ ๋ ๊ณ ๋ คํ๋ ๊ธฐ์ค ์ ๋ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ ์ปฌ๋ผ์ ์ ํํ ๋ ๋ค์ 3๊ฐ์ง ๊ธฐ์ค์ ์ฃผ๋ก ๊ณ ๋ คํฉ๋๋ค.* ์ถ๊ฐ๋ก, ์ธ๋ฑ์ค ์ค์ ์ ์ฃผ์ํ ์ ๋ค์ ํด๋น ๋ชฉ์ฐจ ๋ฒ์๋ฅผ ๋ฒ์ด๋จ์ผ๋ก ์๋ตํ๊ฒ ์ต๋๋ค! โ ์นด๋๋๋ฆฌํฐ(Cardinality)๊ฐ ๋์ ์ปฌ๋ผ์ธ๊ฐ?์นด๋๋๋ฆฌํฐ๋ ํด๋น ์ปฌ๋ผ์ ๊ณ ์ ๊ฐ ์๋ฅผ ์๋ฏธํฉ๋๋ค.InnoDB ๊ฐ ๋ ์ฝ๋๋ฅผ ์ฝ์ ๋, ์นด๋๋๋ฆฌํฐ๊ฐ ๋์์๋ก ๋น ๋ฅด๊ฒ ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ์นด๋๋๋ฆฌํฐ๊ฐ ๋์ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ ๋ ์ฐ.. ๋์์ฑ ์ ์ด ์ JPA์ ๋น๊ด์ ๋ฝ(select ... for update)์ ๋ํด ํ์์ ์ธ ์ด์ ์ด ๊ธ์์๋ MySQL์ ์ฌ์ฉํด, ํน์ ๋ ์ฝ๋์ ๋ฝ์ด ๊ฑธ๋ฆฐ ์ํ์์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ํด๋น ๋ ์ฝ๋์ ์ด๋ ์์ ๊น์ง ํ์ฉํ๋์ง ์คํํด๋ณด๊ณ , MySQL ๋ด๋ถ์์ ์ธ์ ๋ฝ์ ์ฌ์ฉํ๋์ง ์์๋ณด๋ฉฐ ๋น๊ด์ ๋ฝ์ ๋ํด ํ์์ ์ธ ์ด์ ๋ฅผ ์๊ธฐํ๋ ๊ฐ์ธ์ ์ธ ๊ธ์ ๋๋ค. ์ถ๊ฐ๋ก Real MySQL ์ ์ฝ๊ณ , ๊ณต์ ๋ฝ๊ณผ ๋ฐฐํ ๋ฝ์ ๋ฐฐ๊ฒฝ ์ง์์ด ์๋ ๋ถ๋ค์ด ์ฝ๊ฒ ์ดํด ๋ ๊ฒ ๊ฐ์ผ๋ฉฐ, ๊ฒฐ๋ก ์ ๋ง์น๋ฉฐ.. ์ ์ ๋ฆฌํด๋์์ต๋๋ค. ๋ชฉ์ฐจ๋ ๋ค์ ์์๋ก ์งํ๋ฉ๋๋ค.ํ ํธ๋์ญ์ ์์ ๊ณต์ ๋ฝ/๋ฐฐํ ๋ฝ ํ๋ ์, ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๊ฐ๋ฅํ ์ฟผ๋ฆฌ ์๊ฐ๊ณต์ ๋ฝ/๋ฐฐํ ๋ฝ ์ฌ์ฉ ์, ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฐ๊ธฐ ์์ ์ด ๋๊ธฐํ๋ ์ด์ UPDATE / DELETE ์ฟผ๋ฆฌ ์ WHERE ์ ์ ์ธ๋ฑ์ค ์ฌ๋ถ์ ์ค์์ฑMySQL8.0 Repetable Read ์์ Phanto.. MySQL 8.0์ B-Tree ์ธ๋ฑ์ค ์์๋ณด๊ธฐ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ๋ฉด ์กฐํ๊ฐ ์ ๋น ๋ฅธ์ง์ ๋ํ ์๋ฌธ์ ํด์ํ๊ณ ์ Real MySQL์ ํ์ต์ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์๊ธฐ ์ , ์ด๋ป๊ฒ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋์ง๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.8.1 ๋์คํฌ ์ฝ๊ธฐ ๋ฐฉ์# ๊ธฐ๊ณ์ ์ฅ์น์ธ HDD(ํ๋ ๋์คํฌ)๊ธฐ์กด ๋ฐ์ดํฐ๋ ๊ธฐ๊ณ์ ์ฅ์น์ธ ์ํ ๋ชจ์์ HDD(ํ๋ ๋์คํฌ)์ ์ ์ฅํ์์ต๋๋ค.HDD๋ ์ํ์ ๋๋ ค๊ฐ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋คI/O ์์ ์ ๋งค์ฐ ๋นํจ์จ์ ์ด์์ต๋๋ค. # ์ ์์ ์ฅ์น์ ๋ฑ์ฅHDD์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ SSD, CPU, ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ด ์ ๊ธฐ์ ํน์ฑ์ ๋ ์ ์์ ์ฅ์น๊ฐ ๋ฑ์ฅํ๊ฒ ๋์์ต๋๋ค.SSD๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด HDD๋ฅผ ํ์ ์ํฌ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์์ ์ด ๋งค์ฐ ๋น ๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ , DBMS๊ฐ ์ด SSD๋ฅผ ์ฑํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฒ.. [๋์์ฑ ์ ์ด] ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค๊ณผ ๋๊ด์ /๋น๊ด์ ๋ฝ์ ํ์์ฑ ๋น๊ด์ ๋ฝ๊ณผ ๋๊ด์ ๋ฝ์ ๋ํ ๊ณต๋ถ ์๋ฃ๋ ์ ์ด์ธ์๋ ์ถฉ๋ถํ๋ค๊ณ ํ๋จํ์ฌ, ํด๋น ๊ธ์์๋ ์ค๋ช ํ์ง ์์ต๋๋ค.๋ฝ์ ๋ํด ํ์ตํ๊ณ ์๋ ์ค์ด๊ธฐ ๋๋ฌธ์, ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ๋ฐ๊ฒฌํ์ ๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ํธ๋์ญ์ ๊ณผ ๊ฒฉ๋ฆฌ ์์ค์ ์ดํดํด์ ๋๊ด์ , ๋น๊ด์ ๋ฝ์ ์ ์ฌ์ฉํ๋์ง์ ๋ํด ์์๋ด ๋๋ค.1. ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation level) ์ดํดํ๊ธฐํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(isolation)์ด๋?๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์ง ํ๊ธฐ ์ํด ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์๋ก์๊ฒ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ฒ์๋ฅผ ์ด๋ ์ ๋๋ก ์ ํํ ์ง๋ฅผ ๋ ๋ฒจ๋ก ๋๋ ๊ฒ์ ๋๋ค.์๋ฅผ ๋ค๋ฉด, Aํธ๋์ญ์ ์์ id=1 ์ ๋ํ ๋ ์ฝ๋๋ฅผ ์กฐํ ํ ๋, Bํธ๋์ญ์ ์์ id=1 ์ ๋ํ ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.์ด ๋, Aํธ๋์ญ์ ์ ๊ฒฐ.. ์ด์ 1 ๋ค์