1) MySQL ์ํคํ
์ฒ ์ ๊ทธ๋ฆผ์ฒ๋ผ MySQL ์๋ฒ๋ ํฌ๊ฒ MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. (1) MySQL ์์ง MySQL ์์ง์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ๋ SQL ๋ฌธ์ฅ์ ๋ถ์ํ๊ฑฐ๋ ์ต์ ํํ์ฌ ์ฒ๋ฆฌํ๋ ์ญํ ์ ๋ด๋นํ๋ฉฐ MySQL ์์ง์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ ์์๋ ์๋์ ๊ฐ๋ค. โ Connection Handler ์ปค๋ฅ์
๋ฐ ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌ ๋ด๋น โก SQL ์ธํฐํ์ด์ค DML, DDL, Procedure, View ๋ฑ SQL ์ธํฐํ์ด์ค ์ ๊ณต ๋ด๋น โข SQL ํ์ (Parser) SQL ๋ฌธ๋ฒ ์ค๋ฅ ํ์ง ๋ฐ SQL ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ MySQL์ด ์ฒ๋ฆฌํ๊ธฐ ์ข์ ํ ํฐ ๋จ์๋ก ๋๋ ์ ํธ๋ฆฌ ํํ๋ก ํ์ฑ ํ๋ ์์
๋ด๋น โฃ SQL ์ตํฐ๋ง์ด์ (Optimizer) ์ฟผ๋ฆฌ์ ์ต์ ํ๋ ์คํ ๋ด๋น โค ์บ์์ ๋ฒํผ ์ฑ..
1) DB Lock ์ฌํ (1) ๊ฐ์ RDBMS ์ค ํ๋์ธ MySQL์ MariaDB์ ๊ฐ์ด ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก InnoDB๋ฅผ ์ฌ์ฉํ๊ณ ์์ด InnoDB ๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ๋ฐ ์์ด ํต์ฌ์ ์ธ ํธ๋์ญ์
๋ชจ๋ธ (Transaction Model), ๊ฒฉ๋ฆฌ์ฑ ์์ค (Isolation Level), DB Lock์ ์คํ ๋ฆฌ์ง ์์ง์ธ InnoDB์ ์ข
์๋๊ธฐ ๋๋ฌธ์ MySQL๊ณผ MariaDB๋ InnoDB์ ํธ๋์ญ์
๋ชจ๋ธ, ๊ฒฉ๋ฆฌ์ฑ ์์ค, DB Lock ๋ฉ์ปค๋์ฆ์ ๋ฐ๋ฅด๊ฒ ๋๋ค. ๋ํ, ์ฌ๊ธฐ์ ๊น๊ฒ ๋ค์ด๊ฐ๋ณด์๋ฉด MySQL์์ ์ฌ์ฉํ๋ DB Lock์ ํฌ๊ฒ MySQL ์์ง์์ ์ ๊ณตํ๋ DB Lock์ด ์๊ณ , ์คํ ๋ฆฌ์ง ์์ง์์ ์ ๊ณตํ๋ DB Lock์ด ์๋ค. MySQL ์์ง์์ ์ ๊ณตํ๋ DB Lock๊ณผ In..
1) DB Lock ๊ธฐ์ด (1) Lock์ด๋ Lock์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์์ฑ๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ฌ์ฉ์(ํธ๋์ญ์
)๋ค์ด ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๊ณ ํ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Lock์ ์ฌ์ฉํ์ฌ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ฌ์ฉ์(ํธ๋์ญ์
)์ ๋ค๋ฅธ ์ฌ์ฉ์(ํธ๋์ญ์
)๋ค ๊ฐ์ ์ ๊ทผ์ ์ ์ดํ์ฌ ์ถฉ๋์ ๋ฐฉ์งํ๋ค. ์ฐธ๊ณ ๋ก DBMS๋ง๋ค Lock์ ๊ตฌํํ๋ ๋ฐฉ์๊ณผ ์ธ๋ถ์ ์ธ ๋ฐฉ๋ฒ์ ๊ฐ๊ฐ ๋ค๋ฅด๋ฏ๋ก DBMS๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ด์ฉํ๊ธฐ ์ํด์ ํด๋น DB์ Document ๋ฌธ์๋ฅผ ์ ๋
ํ๋๋ก ํ์! (2) Lock์ ์ค์ ๋ฒ์ (2-1) ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์์ Lock์ ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ์ค์ผ๋ก Lock ํ๋ ๊ฒ์ด๋ฉฐ, ์ฆ 1๊ฐ์ ์ธ์
๋ง์ด DB์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ๊ฐ..
1) ํธ๋์ญ์
(1) ํธ๋์ญ์
์ด๋ DB ์์์ ํธ๋์ญ์
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํํ๋ ์์
์ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ฅผ ๋งํ๋ฉฐ, ํ๋์ ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ผ๋ จ์ ์์
๋ค์ ํฌํจํ๋ฉฐ ์ด๋ฌํ ์์
๋ค์ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๊ฑฐ๋ ์คํจํด์ผ ํ๋ค. → All or Nothing ์ ๋ต (2) ํธ๋์ญ์
์ 4๊ฐ์ง ํน์ฑ (ACID) DB์์์ ํธ๋์ญ์
์ ์๋์ 4๊ฐ์ง ํน์ฑ์ ์ง๋๋ค. (2-1) Atomicity (์์์ฑ) ํธ๋์ญ์
์ ๋
ผ๋ฆฌ์ ์ผ๋ก ํ๋์ ์คํ ๋จ์์ฌ์ผ ํ๊ณ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ Statement๋ก ๊ตฌ์ฑ๋์ด ์๋ค ํ๋๋ผ๋ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ฌถ์ผ ์ ์์ด์ผ ํ๋ค. ํ๋์ ์คํ ๋จ์๋ผ๋ฉด ๋ ๊ฐ์ ์ํ๋ก ๊ท๊ฒฐ๋๋๋ฐ, ์ฑ๊ณตํ๊ฑฐ๋ ๋๋ ์คํจํ๊ฑฐ๋์ด๋ค. (All or Nothing) ์ฆ, ์ฌ๋ฌ ๊ฐ์ Statement๋ก ์์ฑ๋์..
1) ํธ๋์ญ์
(Transaction) (1) ํธ๋์ญ์
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋
ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์
์ ๋จ์ ๋๋ ํ๊บผ๋ฒ์ ์ํ๋์ด์ผํ ์ผ๋ จ์ ์ฐ์ฐ๋ค์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, MySQL์์ ๋ฐ์ดํฐ ์ํ๋ฅผ ๋ฐ๊พธ๋ INSERT, DELETE, UPDATE ๋ฑ์ SQL ๋ช
๋ น์ด๋ค์ ๊ฐ๊ฐ ํ๋์ ํธ๋์ญ์
์ด๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ ์ฌ๋ฌ ๋ช
๋ น์ด๋ฅผ ํ๋์ ํธ๋์ญ์
์ผ๋ก ๋ฌถ๊ณ ์ ํ๋ค๋ฉด “START TRANSACTION”์ผ๋ก ๋ฌถ์ ์ ์๋ค. (2) ํธ๋์ญ์
์ ํน์ฑ ์์์ฑ (Atomicity) ํธ๋์ญ์
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋์ง, ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์๋ ๊ฒ์ ์์์ฑ์ด๋ผ๊ณ ํ๋ค. ํธ๋์ญ์
๋ด์ ๋ชจ๋ ๋ช
๋ น์ ๋ฐ๋์ ์๋ฒฝํ ์ํ๋์ด์ผ ํ๋ฉฐ, ๋ชจ๋๊ฐ ์๋ฒฝํ ์ํ๋์ง ์๊ณ ์ด๋ ํ๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ..
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ด๋ ํ
์ด๋ธ์ ๋ถ์ ์ ํ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ
์ด๋ธ์ ์ค๊ณํ ๋, ๊ฐ ์ปฌ๋ผ์ ๋ํด์ ์ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๊ท์น์ ๋งํ๋ค.๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ (๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์๋ ๋ฐ์ดํฐ์ ์ ํ์ฑ ์ ์ง) + ์ ์ฝ ์กฐ๊ฑด (๋ฐ๋์งํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์กฐ๊ฑด) ๐ ์ฆ, ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ์ฝ์
, ์ญ์ , ์์ ๋ฑ์ ์ฐ์ฐ์ ํตํ์ฌ ๋ณํ๋๋ผ๋ ์ง์์ ์ผ๋ก ๋ง์กฑํด์ผ ํ๋ค! ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์๋ ํฌ๊ฒ “๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด”, “๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด”, “์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด”์ด ์์ต๋๋ค. ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ด๋ ๊ฐ ์์ฑ์ ๊ฐ์ ๋ฐ๋์ ๋๋ฉ์ธ์ ์ง์ ๋ ๊ฐ๋ง์ ๊ฐ์ ธ์ผ ํ๋ค๋ ์กฐ๊ฑด์
๋๋ค.๋ ๊ฐ์ ํ์ฉ ์ฌ๋ถ - NOT NULL๐ ..
์กฐ์ธ ์ด๋ (Join) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ฌ๋ฌ ํ
์ด๋ธ์์ ๊ฐ์ ธ์จ ๋ ์ฝ๋๋ฅผ ์กฐํฉํ์ฌ ํ๋์ ํ
์ด๋ธ์ด๋ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ํํํ๋ ๊ฒ์ Join ์ด๋ผ๊ณ ํ๋ค.์ด๋ฌํ JOIN์ ๋ณดํต SELECT๋ฌธ๊ณผ ํจ๊ป ์์ฃผ ์ฌ์ฉ๋๋ฉฐ ํ์ค SQL์์๋ ๋ ์ฝ๋๋ฅผ ์กฐํฉํ๋ ๋ฐฉ์์ ๋ฐ๋ผ JOIN์ INNER JOIN, LEFT JOIN, RIGHT JOIN ์ผ๋ก ๊ตฌ๋ถํ๋ค. ๊ธฐ๋ณธ ์๋ฆฌJoin์ ๊ธฐ๋ณธ ์๋ฆฌ๋ N ๊ฐ์ ํ
์ด๋ธ์ ์นดํ
์์ ๊ณฑ (Cartesian Product)์ผ๋ก ํ
์ด๋ธ์ ์กฐํฉํ๋ค๋ ๊ฒ์ ์๋ค. ์กฐ์ธ์ ํตํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ ์ ํ ๋๋ ์กฐ์ธ ์กฐ๊ฑด์ ๋ช
์ํด์ค์ผ ํ๋๋ฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๊ฐ์ ํ
์ด๋ธ์ PK๋ FK์ ๊ด๊ณ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ์ด ๊ฐ์ ํน์ ํ ๊ท์น์ ํตํด์ ๋ช
์ํ๋ค. ์๋ฅผ ๋ค์ด, N๊ฐ์ ํ
์ด๋ธ์ ์กฐ์ธํ ๋์๋ ์ต์ (N-..
์๋ธ์ฟผ๋ฆฌ (SubQuery)SQL ๋ฌธ์ฅ (SQL Statement) ์์์ ๋ณด์กฐ๋ก ์ฌ์ฉ๋๋ ๋ ๋ค๋ฅธ SELECT๋ฌธ์ ์๋ฏธํ๋ฉฐ, ์๋ฅผ ๋ค์ด ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ฉ์ธ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ค๋ฉด ์ด๋ฅผ ์ํ ์ค๊ฐ ๋จ๊ณ ํน์ ๋ณด์กฐ ์ญํ ์ ํ๋ SELECT๋ฌธ์ ์๋ธ์ฟผ๋ฆฌ๋ผ ํ๋ ๊ฒ์ด๋ค. ์ฆ, ํ๋์ SQL๋ฌธ์ ๊ธฐ์ค์ผ๋ก ๋ฉ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ชจ๋ SELECT๋ฌธ์ ์๋ธ์ฟผ๋ฆฌ๋ก ๋ณด๋ฉด ๋๋ฉฐ, ์๋ธ์ฟผ๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋๋ณด๊ธฐโ
[์ฐธ๊ณ ] ํ
์ด๋ธ ์ฐธ์กฐ์กฐ์ธ (Join)์ ์กฐ์ธ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ํ
์ด๋ธ์ด ๋๋ฑํ ๊ด๊ณ์ ์๊ธฐ ๋๋ฌธ์ ์กฐ์ธ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ํ
์ด๋ธ์ ์ปฌ๋ผ์ ์ด๋ ์์น์์๋ผ๋ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ ์๋ธ์ฟผ๋ฆฌ๋ ๋ฉ์ธ์ฟผ๋ฆฌ๊ฐ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ๋ ์ข
์์ ์ธ ๊ด๊ณ๋ก ์๋ธ์ฟผ๋ฆฌ๋ ๋ฉ์ธ ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ๋ชจ๋ ์ฌ์ฉํ ์ ..