Database(20)
-
๋ ์ฝ๋ ๋๋ค ์กฐํ๋ฅผ ํตํ ๋๊ด์ ๋ฝ ์ฑ๋ฅ ๊ฐ์ ๊ธฐ (with ์ฌ์ด๋ ํ๋ก์ ํธ)
์๋ก TiketeerTiketeer has 5 repositories available. Follow their code on GitHub.github.comํ์ฌ ์ ๋ ์ง์ธ 3๋ถ๊ณผ ํจ๊ป ๊ฐ๋จํ ํ ํ๋ก์ ํธ๋ฅผ ์งํ ์ค์ธ๋ฐ, ๊ทธ ๊ณณ์์ ์งํ ์ค์ธ ‘ํฐ์ผํ ์๋น์ค’ ํ๋ก์ ํธ์์ ํ์๊ฐ ๋ถํ๊ฐ ๋ชฐ๋ฆฌ๋ ํฐ์ผํ ํ๊ฒฝ์์๋ ๊ตฌ๋งค์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ ์ฑ๋ฅ์ ์ธ ๊ฐ์ ๋ ์ด๋ฃจ์ด๋ด๊ธฐ ์ํด ๋ค์ํ ๋ ผ์๋ค์ ์งํํ๊ณ ์์ต๋๋ค. ํด๋น ๊ธ์์๋ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ํฐ์ผ ๋ ์ฝ๋๋ฅผ ์ฝ์ด์ค๋ ๋ฐฉ์์ ๊ฐ์ ํ๊ณ ๊ธฐ์กด ๋ฐฉ์๊ณผ ์ฑ๋ฅ์ ์ผ๋ก ๋น๊ตํ ๋ด์ฉ์ ๋ค๋ฃจ๊ณ , ์ต์ข ์ ์ผ๋ก๋ ์ด๋ฅผ ํตํด ์ ํฌ ์๋น์ค์ ๋ฏธ์น ์ํฅ์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ค์ด๊ฐ๊ธฐ ์์๋ณธ๊ฒฉ์ ์ธ ์ฑ๋ฅ ๋น๊ต์ ์์ ํ์ฌ ํ๋ก..
2024.05.02 -
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 -
ํ์ด์ง๋ค์ด์ ๋ฐฉ๋ฒ๋ก ๋น๊ต(Offset vs Cursor)
ํ์ด์ง๋ค์ด์ ์ด๋? OLTP ํ๊ฒฝ์์ ์ฌ์ฉ์์๊ฒ ๋ฐํ๋๋ ๋ฐ์ดํฐ๋ค์ ๋๋ถ๋ถ ํน์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ์ผ๋ถ ๋ฐ์ดํฐ์ด๋ค. ์๋ฅผ ๋ค๋ฉด ์น๊ฐ๋ฐ์ ๊ฐ์ฅ ํํ ์์์ธ ๊ฒ์ํ์ด ๊ทธ๋ ๋ค. ๊ฒ์ํ์ ์ผ๋ฐ์ ์ผ๋ก ํ ํ์ด์ง์ ์ฝ 20๊ฐ์ ๊ฒ์๊ธ๋ค์ ์ต์ ์์ผ๋ก ๋ ธ์ถ์ํค๊ณ , ์ฌ์ฉ์๊ฐ ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ๊ฒ ๋๋ฉด 21 ~ 40๋ฒ์งธ ๋ฐ์ดํฐ๊ฐ ๊ทธ์ ์์ผ ์กฐํ๋๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ค. ์ด ์ํฉ์์ ์๋ฒ๋ ์ฌ์ฉ์์๊ฒ ์ ์ฒด ๊ฒ์๊ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์๋, ์ฌ์ฉ์๊ฐ ์์นํ ํ์ด์ง์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ง์ ๋ฐํํ๋๋ก API ์ค๊ณ๊ฐ ์ด๋ฃจ์ด์ง๋๋ฐ ์ด๋ฅผ ํ์ด์ง๋ค์ด์ ๋ฐฉ๋ฒ๋ก ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ์ด์ง๋ค์ด์ ์ข ๋ฅ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฒ์๋ Offset ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ๊ณผ Cursor(Keyset) ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ์ด ์กด์ฌํ๋ค. Offset ๊ธฐ..
2024.02.17 -
Exists ์ฐ์ฐ์์ ๋ํด์ (SQL)
๊ฐ์ธ์ ์ผ๋ก SQL์ Exists ์ฐ์ฐ์์ ๋ํ ์ดํด๋๊ฐ ๋ฎ์๊ณ ์ด๋ก ์ธํด ์ค์ ๋ก ํ์ฉ์ ๊ฑฐ์ ๋ชปํ๊ณ ์์๋๋ฐ, DB ์คํฐ๋๋ฅผ ์ํด ์ฑ ์ ์ฝ๋ ๋์ค ํด๋น ์ฐ์ฐ์์ ๋ํ ๋ด์ฉ์ด ๋ฑ์ฅํด์ ์ด ๊ธฐํ์ ์ด๋ฅผ ํ์คํ ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค. Exists ์ฐ์ฐ์๋? Exists ์ฐ์ฐ์๋ ์ฐ์ฐ์ ์ดํ์ ๋ฑ์ฅํ๋ ์๋ธ์ฟผ๋ฆฌ์ ๋ํด ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ True, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ False๋ฅผ ๋ฐํํ๋ ์ญํ ์ ์ํํ๋ค. ๋ง๋ก๋ง ์ค๋ช ํ๋ฉด ์ดํด๊ฐ ์ด๋ ค์ฐ๋ ์ค์ ์์๋ฅผ ๋ค์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. SELECT post.id, post.name FROM post WHERE post.user_id = 10 AND EXISTS ( SELECT 1 FROM comment WHERE comment.post_id = post.id AND..
2024.02.12 -
์๋ธ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ๋ํ ์คํด
๊ฐ์ธ์ ์ธ ๊ฒฝํ ์, ์ทจ์ ์ ์ค๋นํ๋ ๊ฐ๋ฐ์ ์ง๋ง์ ๋ถ๋ค์ด๋ ํน์ ์ ์ ๋ด์ง ์ฃผ๋์ด ๊ฐ๋ฐ์ ๋ถ๋ค ์ฌ์ด์๋ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ๊ฒ์ ์ฑ๋ฅ์ด ๋๋ผ๋งํฑํ๊ฒ ๋๋น ์ง ๊ฒ์ด๋ผ๋ ํต๋ ์ด ์กด์ฌํ๋ ๊ฒ ๊ฐ๋ค. ๋ ๋ํ ๊ทธ๋ ๊ฒ ์๊ฐํด์์๋๋ฐ ์ด๊ฒ ์ ๋ง ๋ง๋์ง, ์๋๋ฉด ์คํด์ธ ๊ฒ์ธ์ง ํ์ธํด๋ณด๋ คํ๋ค. ์๋ธ ์ฟผ๋ฆฌ๋? ์๋ธ ์ฟผ๋ฆฌ๋ ๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ์กด์ฌํ๋ ์ํฉ์์ ๋ฉ์ธ ์ฟผ๋ฆฌ ๋ด์ ํฌํจ๋ ๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ค ์ ์ ํฌํจ๋ ์ฟผ๋ฆฌ์ธ์ง์ ๋ฐ๋ผ ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ(SELECT ๋ฌธ), ์ธ๋ผ์ธ ๋ทฐ(FROM ์ ), ์๋ธ ์ฟผ๋ฆฌ(WHERE ์ , ๊ทธ๋ฅ ์๋ธ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ ๋ฏ...) ๋ฑ์ ๋ช ์นญ์ผ๋ก ๋ถ๋ฆฐ๋ค. ์๋๋ ์๋ธ ์ฟผ๋ฆฌ์ ์์์ด๋ค. -- ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ SELECT p.id AS id, (SELECT email FROM accou..
2024.01.21