๐ Databases/RealMySQL 8.0
์ธ๋ฑ์ฑ ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ. B๋ Binary์ ์ฝ์๊ฐ ์๋, Balanced์ ์ฝ์์ด๋ค. 8.3.1 ๊ตฌ์กฐ ๋ฐ ํน์ฑ B-Tree์ ๊ตฌ์กฐ ์ ์ผ ์๋จ์ ์๋ ๋ฃจํธ ๋
ธ๋, ์ค๊ฐ์ ์๋ ๋ธ๋์น ๋
ธ๋, ๊ฐ์ฅ ๋ง์ง๋ง์ ์๋ ๋ฆฌํ ๋
ธ๋๊ฐ ์๋ค. ๋ฆฌํ ๋
ธ๋๋ ํญ์ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ๊ธฐ ์ํ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ธ๋ฑ์ค๋ค์ ๋ชจ๋ ์ ๋ ฌ์ด ๋ ์ํ๋ก ์ ์ฅ์ด ๋์ด ์๋ค. ์ค์ ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ํ์ผ์ ๋ ์ฝ๋๋ ์ ๋ ฌ๋์ด์์ง ์๋ค. ์๋ฐํ ๋งํ๋ฉด, InnoDB์์๋ ๋ ์ฝ๋๊ฐ ํด๋ฌ์คํฐ๋์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก PK ์์๋ก ์ ๋ ฌ๋์ด ์ ์ฅ๋๋ค. ๋ฐ์ดํฐ ๋ ์ฝ๋ ๊ตฌ์กฐ (InnoDB) ๋ฆฌํ ๋
ธ๋์ ๋ฐ์ดํฐ ํ์ผ์ ๊ตฌ์กฐ๋ฅผ ์์ธํ๊ฒ ์ดํด๋ณด์. ๋ฐ์ดํฐ ํ์ผ์๋ ๊ฒฐ๊ตญ PK๋ฅผ ์ ์ฅํ๊ณ ์๋ B-Tree..
๐ Databases/RealMySQL 8.0
8.1 ๋์คํฌ ์ฝ๊ธฐ ๋ฐฉ์ HDD vs SSD ์์ฐจ I/O ๋ฐฉ์์ ์ฌ์ค SSD๊ฐ HDD๋ณด๋ค ์กฐ๊ธ ๋น ๋ฅด๊ฑฐ๋ ๊ฑฐ์ ๋น์ทํ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. ํ์ง๋ง, ๋๋ค I/O์์๋ ๋๋ต 5000๋ฐฐ ์ ๋ ๋น ๋ฅด๋ค. ๋๋ค I/O, ์์ฐจ I/O๋? ์์ฐจ I/O๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ 1 ๋ฒ ์์คํ
์๊ฒ ์์ฒญ์ ํ๋ค. ์ฆ, ๋์คํฌ ํค๋๋ฅผ 1 ๋ฒ ์์ง์๋ค. ๋๋ค I/O๋ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ง๋ค ์์คํ
์๊ฒ ์์ฒญ์ ํ๋ค. ์ฆ, ๋์คํฌ ํค๋๋ฅผ n ๋ฒ ์์ง์๋ค. ๊ฒฐ๊ตญ, ์์ฐจ I/O๋ ๋๋ค I/O๋ณด๋ค ๊ฑฐ์ 3๋ฐฐ์ ๋ ๋น ๋ฅด๋ค. ๐ก ๋์คํฌ์ ์ฑ๋ฅ์ ๋์คํฌ ํค๋์ ์์น ์ด๋ ์์ด ์ผ๋ง๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ธฐ๋กํ๋๋์ ์ํด ๊ฒฐ์ ๋๋ค๊ณ ๋ณผ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก, ์ฟผ๋ฆฌ๋ฅผ ํ๋ํ๋ ๊ฒ์ ๋๋ค I/O๋ฅผ ์ค์ด๊ธฐ ์ํจ์ด๋ค. 8..
๐ Databases/RealMySQL 8.0
ํธ๋์ญ์
์ ๊ฒฉ๋ฆฌ ์์ค(isolation level)์ด๋ ์ฌ๋ฌ ํธ๋์ญ์
์ด ๋์์ ์ฒ๋ฆฌ๋ ๋ ํน์ ํธ๋์ญ์
์ด ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ํฌ๊ฒ 4๊ฐ์ง๋ก ๋๋๋ค. READ UNCOMMITED (=DIRTY READ) ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค. READ COMMITED Oracle ๊ฐ์ DBMS์์ ์ฃผ๋ก ์ฌ์ฉ REPEATABLE READ MySQL์์ ์ฌ์ฉ SERIALIZABLE ๋์์ฑ์ด ์ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋๋ค. ์๋๋ก ๋ด๋ ค๊ฐ ์๋ก ํธ๋์ญ์
๊ฐ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ(๊ณ ๋ฆฝ) ์ ๋๊ฐ ๋์์ง๋ฉฐ, ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋ฎ์์ง๋ค. ํ์ง๋ง, SERIALIZABLE์ด ์๋ ๋๋จธ์ง 3๊ฐ๋ ํฌ๊ฒ ์ฑ๋ฅ์ ๊ฐ์ ์ด๋ ์ ํ๋ ๋ฐ์ํ์ง ์๋๋ค. 5.4.1 READ ..
๐ Databases/RealMySQL 8.0
5.3 InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ ๊ธ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ MySQL๊ณผ ๋ณ๊ฐ๋ก ์ ๊ธ์ ์ ๊ณตํ๋ค. ๐ก ์คํ ๋ฆฌ์ง ์์ง ๋ด๋ถ์์ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ ๋ฐฉ์์ ํ์ฌํ๊ณ ์๋ค. 5.3.1 InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ ๊ธ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ ์ ์ ๊ณตํ๋ฉฐ, ์ ๊ธ ์ ๋ณด๊ฐ ์๋นํ ์์ ๊ณต๊ฐ์ผ๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ *๋ฝ ์์ค์ปฌ๋ ์ด์
(๋ ์ฝ๋ ๋ฝ์ด ํ์ด์ง ๋ฝ์ผ๋ก, ๋๋ ํ
์ด๋ธ ๋ฝ์ผ๋ก ๋ ๋ฒจ์
๋๋ ๊ฒฝ์ฐ)๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ํ InnoDB์์๋ ํน์ง์ธ ๋ ์ฝ๋์ ๋ ์ฝ๋ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ ๊ทธ๋ ๊ฐญ(GAP) ๋ฝ์ด๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค. ์ ์ ์ผ๋ก ํ์๋ ๊ฒ์ ์กด์ฌํ์ง ์๋ ๋ ์ฝ๋๋ฅผ ๋ปํ๋ค. 5.3.1.1 ๋ ์ฝ๋ ๋ฝ ๋ ์ฝ๋ ์์ฒด๋ง์ ์ ๊ทธ๋ ๊ฒ์ *๋ ์ฝ๋ ๋ฝ์ด๋ผ๊ณ ํ๋ค. ๋ ์ฝ๋ ? ๋ ์ฝ๋๋ ํ
์ด๋ธ์ ํ ๋ฐ์ดํฐ์..
๐ Databases/RealMySQL 8.0
์ ๊ธ์ ๋ ๋ฒจ MySQL ๋ ๋ฒจ์ ์ ๊ธ ๋ชจ๋ ์คํ ๋ฆฌ์ง ์์ง์ ์ํฅ์ ๋ฏธ์นจ ํ
์ด๋ธ ๋ฝ ์ธ์๋ ๋ฉํ๋ฐ์ดํฐ ๋ฝ(ํ
์ด๋ธ ๊ตฌ์กฐ ์ ๊ธ), ๋ค์๋ ๋ฝ ๋ฑ ๊ธฐ๋ฅ ์ ๊ณต ์คํ ๋ฆฌ์ง ์์ง ๋ ๋ฒจ์ ์ ๊ธ ์คํ ๋ฆฌ์ง ์์ง ๊ฐ ์ํธ ์ํฅ ์์ 5.2.1 Global Lock(๊ธ๋ก๋ฒ ๋ฝ) DML(Data Manipulation Language, ๋ฐ์ดํฐ ์กฐ์์ด)๋? ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์
๋ ฅ๋ ๋ ์ฝ๋๋ฅผ ์กฐํ, ์์ , ์ญ์ ๋ฑ์ ์ญํ ์ ํ๋ ์ธ์ด SELECT INSERT UPDATE DELETE DDL(Data Definition Language, ๋ฐ์ดํฐ ์ ์์ด)๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ํ๋ ์ธ์ด (๋ฐ์ดํฐ ์ ์ฒด์ ๊ณจ๊ฒฉ์ ๊ฒฐ์ ) CREATE ALTER DROP TRUNCATE FLUSH TABLES WITH READ LOCK ๋ช
๋ น์ผ๋ก ํ๋ MyS..
๐ Databases/RealMySQL 8.0
ํธ๋์ญ์
์ ์ฑ์ง Transaction(ํธ๋์ญ์
)์ 4๊ฐ์ง ์ฑ์ง (ACID) Atomicity(์์์ฑ) all or nothing ํธ๋์ญ์
์ ๋ชจ๋ ์ฐ์ฐ๋ค์ด ์ ์ ์๋ฃ๋๊ฑฐ๋ ์ด๋ ํ ์ฐ์ฐ๋ ์ํ๋์ง ์์ ์ํ๋ฅผ ๋ณด์ฅ Consistency(์ผ๊ด์ฑ) ๊ณต์ ์ผ๋ก ์ํ๋ ํธ๋์ญ์
์ ์ ๋นํ ๋ฐ์ดํฐ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋์์์ ์๋ฏธ DB์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ์ฌ์ ์ ์ค์ ๋์ด ์๋ ๋ฃฐ์ ๋ง์ง ์๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ฐฉ์ง Isolation(๋
๋ฆฝ์ฑ/๊ณ ๋ฆฝ์ฑ) ์ฌ๋ฌ ํธ๋์ญ์
์ด ๋์์ ์ํ ๋๋๋ผ๋ ๊ฐ๊ฐ์ ํธ๋์ญ์
์ ๋ค๋ฅธ ํธ๋์ญ์
์ ์ํ์ ์ํฅ์ ๋ฐ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์ํ๋์ด์ผ ํจ ๋ค์์ ์ธ์
๋๋ ์ ์ ๊ฐ ๊ฐ์ ์๊ฐ์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์ฒ๋ฆฌ ์ค์ผ ๋ ์ํ ์ค์ธ ํธ๋์ญ์
์ด ์๋ฃ ๋ ๋ ๊น์ง ๋ค๋ฅธ ํธ๋์ญ์
์ด ๋ผ์ด ๋ค์ง ๋ชปํ๊ฒ..