Database(21)
-
๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์ํ Mysql Online DDL ๊ธฐ์
์๋น์ค๊ฐ ์ปค์ง์ ๋ฐ๋ผ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋๊ณ , ์ด์ ๋ฐ๋ผ ์๋น์ค ๋ทํธ์์๋ ๋น์ฆ๋์ค ๋ก์ง ๋ฟ ์๋๋ผ DB๊น์ง ์๋ง์ ๋ณ๊ฒฝ์ ๋ค์ด ์๊ฒจ๋ฉ๋๋ค.์ด ๋๋ง๋ค ์๋น์ค ์ค๋จ ๊ณต๊ณ ๋ฅผ ๋ด์ ์ฌ์ฉ์ ํธ๋ํฝ์ ์์ฒ ์ฐจ๋จํ๊ณ ํจ์น๋ฅผ ์งํํ๋ค๋ฉด ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ํธํ ์ง ๋ชฐ๋ผ๋, ์ค๋จ๋ ๋งค ์์ ์ด ์ผ์ข ์ ์์ค๋ก ๋ณผ ์ ์์ด ์ฝ๊ฒ ์๊ฐํ ๋ฌธ์ ๋ ์๋๋๋ค.์ฆ, ์๋น์ค์ ๊ด์ ์์๋ ํผ์น๋ชปํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๋ฉด ๋ฌด์ค๋จ์ผ๋ก ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ ํธ์ด ๋ ๋์์ด ๋๋ฆฌ๋ผ๋ ๊ฒ์ ์๋ช ํฉ๋๋ค.ํ์ง๋ง ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ํ๊ณ ์ถ๋ค๊ณ ๋ฌด์กฐ๊ฑด ํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. DB ๋ ์ด์ด์ ๋ณ๊ฒฝ์ ์ ์ฉํ๋ค๋ณด๋ฉด ๋น์ ์คํ๋๊ณ ์๋ ํธ๋์ญ์ ์ Blocking์ด ๋ ์๋, ํน์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด ์ข ๋ฃ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ ์ ์ ์๋น์ค ์ด์ฉ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด๊ธฐ..
2025.03.16 -
๋ ์ฝ๋ ๋๋ค ์กฐํ๋ฅผ ํตํ ๋๊ด์ ๋ฝ ์ฑ๋ฅ ๊ฐ์ ๊ธฐ (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