Database(8)
-
Database PK ์์ฑ ์ ๋ต (without DB, Mysql)
๊ฐ์ฅ ์์ฝ๊ฒ ํ ์ด๋ธ์์ ์ฌ์ฉํ PK๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ํ ์ด๋ธ์ ์์ฑํ ๋ PK๊ฐ ๋ ์์น ์นผ๋ผ์ AUTO_INCREMENT(MySql ๊ธฐ์ค)๋ฅผ ๊ฑธ์ด์ฃผ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํ๋ฉด, ๊ฐ๋ฐ์๋ ๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ PK ์นผ๋ผ์ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ผ๋ฉฐ DB๊ฐ ์์์ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐ์ํจ ๊ฐ์ด ๋ ์ฝ๋์ ํฌํจ๋๊ฒ ๋๋ค. ์ธ๋ฑ์ค๋ ๊ฒฐ๊ตญ DB์์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ๋ ์ด๊ณ , ๊ทธ ๊ฐ์ DB๊ฐ ์ง์ ์์ฑํด์ฃผ์ด ๊ฐ๋ฐ์๊ฐ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค๋ฉด ๊ทธ๊ฑธ๋ก ๋ ๊ฒ ์๋๊ฐ? ๋ผ๊ณ ์๊ฐํ ์ ์์ผ๋ ์ด๋ฌํ ๋ฐฉ์์๋ ๊ฒฐ๊ตญ ํน์ ๊ด์ ์์๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค. ์ด๋ฒ ๊ธ์์๋ ์ด ํ๊ณ๋ค์ ๋ํด ์์๋ณด๊ณ ์ด๋ฅผ ๊ทน๋ณตํ ์ ์๋ ๋๋ค๋ฅธ ๋ฐฉ์๋ค์ ๋ํด ์ดํด๋ณด๊ฒ ๋ค. DB๊ฐ ์ง์ ๊ด๋ฆฌํ๋ PK์ ๋ฌธ์ ์ 1. ๋ถ์ฐ์ฒ๋ฆฌ ํ๊ฒฝ์์ PK ๊ฐ ์ฑ๋ฒ์ ์ด๋ ค์ ์ต๊ทผ์๋ ๋๊ท๋ชจ..
2024.03.17 -
MVCC in Mysql(with ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค)
์ด๋ฒ ๊ธ์์๋ MVCC์ ๊ฐ๋ ๊ณผ ์ด๋ป๊ฒ ๋์ํ๋ ๊ฒ์ธ์ง, ๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ ๊ตฌํํ ๋ ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์๋์ง์ ๋ํด ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ํ๋์ธ Mysql์ ํตํด ์ ๋ฆฌํ๊ณ ์ ํ๋ค. ๋ค์ด๊ฐ๊ธฐ ์์ ์ด๋ฒ ๊ธ์์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃจ๊ฒ ๋ MVCC ์ฃผ์ ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์, ๋จผ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ ๋ํ ๋ฐฐ๊ฒฝ์ง์์ด ํ์ํ๋ค. ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ํธ๋์ญ์ ๋ค์ด ๋์๋ค๋ฐ์ ์ผ๋ก ์คํ๋ ๋ ํด๋น ํธ๋์ญ์ ์ ์กฐํ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ผ๋ง๋ ์ํฅ์ ๋ฐ๊ฒํ ์ง์ ๋ํ ์์ค์ ์๋ฏธํ๋ค. READ UNCOMMITED, READ COMMITED, REPEATABLE READ, SERIALIZABLE์ ์ด 4๊ฐ์ง ์์ค์ผ๋ก ๊ตฌ์ฑ๋๊ณ ์ธ๊ธํ ์์์ ์ญ์์ผ๋ก ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง๋ค. (READ ..
2024.02.25 -
์๋ธ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ๋ํ ์คํด
๊ฐ์ธ์ ์ธ ๊ฒฝํ ์, ์ทจ์ ์ ์ค๋นํ๋ ๊ฐ๋ฐ์ ์ง๋ง์ ๋ถ๋ค์ด๋ ํน์ ์ ์ ๋ด์ง ์ฃผ๋์ด ๊ฐ๋ฐ์ ๋ถ๋ค ์ฌ์ด์๋ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ๊ฒ์ ์ฑ๋ฅ์ด ๋๋ผ๋งํฑํ๊ฒ ๋๋น ์ง ๊ฒ์ด๋ผ๋ ํต๋ ์ด ์กด์ฌํ๋ ๊ฒ ๊ฐ๋ค. ๋ ๋ํ ๊ทธ๋ ๊ฒ ์๊ฐํด์์๋๋ฐ ์ด๊ฒ ์ ๋ง ๋ง๋์ง, ์๋๋ฉด ์คํด์ธ ๊ฒ์ธ์ง ํ์ธํด๋ณด๋ คํ๋ค. ์๋ธ ์ฟผ๋ฆฌ๋? ์๋ธ ์ฟผ๋ฆฌ๋ ๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ์กด์ฌํ๋ ์ํฉ์์ ๋ฉ์ธ ์ฟผ๋ฆฌ ๋ด์ ํฌํจ๋ ๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ค ์ ์ ํฌํจ๋ ์ฟผ๋ฆฌ์ธ์ง์ ๋ฐ๋ผ ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ(SELECT ๋ฌธ), ์ธ๋ผ์ธ ๋ทฐ(FROM ์ ), ์๋ธ ์ฟผ๋ฆฌ(WHERE ์ , ๊ทธ๋ฅ ์๋ธ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ ๋ฏ...) ๋ฑ์ ๋ช ์นญ์ผ๋ก ๋ถ๋ฆฐ๋ค. ์๋๋ ์๋ธ ์ฟผ๋ฆฌ์ ์์์ด๋ค. -- ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ SELECT p.id AS id, (SELECT email FROM accou..
2024.01.21 -
JOIN์ ์ ๋ง ๋๋ฆฐ๊ฐ (์ญ์ ๊ทํ)
Q. ์ญ์ ๊ทํ๋ฅผ ์ํํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์? A. ํ ์ด๋ธ์ด ์ชผ๊ฐ์ ธ ์กฐ์ธ ์ฐ์ฐ์ด ์ฟผ๋ฆฌ ๋ด ํฌํจ๋๋ฉด ์ฑ๋ฅ์ด ์์ข์์ง๊ธฐ ๋๋ฌธ์, ์กฐํ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด์ ์ญ์ ๊ทํ๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ์ต๊ทผ ๋ฉด์ ์คํฐ๋ ์ค, ์ญ์ ๊ทํ์ ๋ํด ์ด์ผ๊ธฐ๋ฅผ ํ๋ค๊ฐ ๋์จ ๋ฌธ๋ต์ด๋ค. ์ง๋ฌธ์ ๋ด๊ฐ, ๋ต๋ณ์ ์คํฐ๋์์ด ํด์ฃผ์ จ๋๋ฐ ๋ง์ฝ ์๋ก ์ ์ฅ์ด ๋ฐ๋์์ด๋ ๋๊ฐ์ด ๋๋ตํ์ ๊ฒ ๊ฐ๋ค. Database๋ฅผ ๊ณต๋ถํ๋ฉด์, ํน์ ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ํต๋ ์ฒ๋ผ ๋ฐ์๋ค์ด๊ฒ ๋๋ ๋ง์ด ๋ฐ๋ก ์กฐ์ธ์ ๋๋ฆฌ๋ค.์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ต๊ทผ์ ๋ค์ด์๋ Database์ ๋ํด ๋ ๊น๊ฒ ๊ณต๋ถํ ์ผ๋ค์ด ์๊ธฐ๋ฉด์ ์ด์ ์๋ฌธ์ด ์๊ฒผ๋ค. ์กฐ์ธ์ด ๋ง์ฝ ์ง์ง ๋๋ฆฐ๊ฑฐ๋ผ๋ฉด, ์ ๊ทธ๋ฐ๊ฑด๋ฐ? ๋ณดํต ์ด๋ ๊ฒ ๊น์ง ๋ฌผ์ด๋ณด๋ฉด ํ ์ด๋ธ ์ฌ๋ฌ๊ฐ๋ฅผ ๋ด์ผํ๋๊น.๋ผ๊ณ ๋ต๋ณ์ด ๋์์ค๋๋ฐ ์ด๋ฐ ๋๋ต์ ๋ด๊ฐ ์ํ๋ ..
2024.01.07 -
Slow Query ํ์ธ๋ฒ (in Mysql, Postgresql)
๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ์ฌ์ฉ์์ ์ ์ฅ์์๋ ์ค์ํ์ง๋ง DB ๋ ๋ฒจ์ ํจ์จ์ ์์๊ด๋ฆฌ๋ฅผ ์ํด์๋ ๊ผญ ํ์ํ ์ผ์ด๋ค. ์ด๋ป๊ฒ ์ฟผ๋ฆฌ์ ์คํ ์๊ฐ๋ค์ ํ์ธํ ์ ์์๊น? ์ง์ ์ผ์ผ์ด ์คํ์์ผ๋ณด๋ฉด์ ์๊ฐ์ ์ฌ์ผ ํ๋? ๋คํํ๋ ์ผ๋ถ DB๋ค์ ๊ทธ๋ค ์๋ฒ์์ ์ํ๋๋ ์ฟผ๋ฆฌ ์ค ์๋ฒ์ ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ Slow Query(์ฌ๋ก์ฐ ์ฟผ๋ฆฌ)๋ค์ ๋ฐ๋ก ์ ์ฅํด๋๊ณ , ์ด๋ฅผ ๊ฐ๋ฐ์๋ค์ด ํ์ธํ ์ ์๋๋ก ํ๊ณ ์๋ค. ์ด ๊ธ์์๋ ์ฌ๋ก์ฐ ์ฟผ๋ฆฌ์ ํ์ธ์ด ์ฉ์ดํ ๋ DB, Mysql๊ณผ Postgresql์์ ์ด๋ฅผ ์ค์ ํ๊ณ ํ์ธํ๋ ๋ฒ์ ๋ค๋ฃจ๋ ค๊ณ ํ๋ค. Mysql ์ค์ ๋ฒ Mysql์์๋ ์๋ ๋ด์ฉ์ my.cnf์ ์ถ๊ฐํ๋ฉด 1์ด ์ด์ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ๋ก์ฐ ์ฟผ๋ฆฌ๋ก ์์ ํ๊ณ ์ด์ ๋ํ ์์ง์ด ์์๋๋ค. ๋ฌผ๋ก ์ค์ ํ์ผ์ ์์ ํ๊ธฐ ๋๋ฌธ์ ..
2023.12.13 -
Buffer Pinning ๊ธฐ๋ฒ (in Oracle)
์ผ๋ฐ์ ์ผ๋ก Index Scan์ด๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ๊ธฐ๋ฒ๋ค(Index Range Scan, Index Unique Scan ๋ฑ)์ Single Block IO๋ฅผ ํ์ฉํ๋ค. (ํด๋น ๋ด์ฉ์ ๋ํ ์ดํด๋๊ฐ ๋ถ์กฑํ๋ค๋ฉด ์ด์ ๊ธ ์ฐธ์กฐ -> ํ ์ด๋ธ ์ค์บ ๋ฐฉ์์ ๋ฐ๋ฅธ DB Block IO ์ ๋ต) ๋ค์ ์ค๋ช ํ๊ฒ ์ง๋ง, ์ฝ์ด์ผ ํ ๋ธ๋ก์ด ๋ฒํผ์ ์กด์ฌํ๋ค๊ณ ํด๋ ํด๋น ๋ธ๋ก์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ ํฌ์ธํฐ๋ฅผ ํ๋ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค. ๋ฐ๋ผ์ ์ฝ์ด์ผ ํ ์ธ๋ฑ์ค ๋ ์ฝ๋๊ฐ ๋ง์ ๊ฒฝ์ฐ์, ๊ทธ ์ ๋งํผ ๋ ผ๋ฆฌ์ IO๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ณผ ์ ์๊ณ ๋งค๋ฒ ํฌ์ธํฐ๋ฅผ ์๋กญ๊ฒ ํ๋ํ๋ค๊ณ ์๊ฐํ ์ ์๋ค. ๋ง์ฝ ์ธ๋ฑ์ค ๋ฆฌํ ๋ ธ๋์์ ์ฝ์ด๋ธ ํ ์ด๋ธ ROWID๊ฐ ๋๋ถ๋ถ ๋์ผํ ๋ธ๋ก์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ฉด? ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ธ๋ฑ์ค ๋ ์ฝ๋ ์ ๋งํผ ํฌ์ธํฐ ํ๋ ๊ณผ์ ..
2023.12.09