MySQL(4)
-
๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์ํ Mysql Online DDL ๊ธฐ์
์๋น์ค๊ฐ ์ปค์ง์ ๋ฐ๋ผ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋๊ณ , ์ด์ ๋ฐ๋ผ ์๋น์ค ๋ทํธ์์๋ ๋น์ฆ๋์ค ๋ก์ง ๋ฟ ์๋๋ผ DB๊น์ง ์๋ง์ ๋ณ๊ฒฝ์ ๋ค์ด ์๊ฒจ๋ฉ๋๋ค.์ด ๋๋ง๋ค ์๋น์ค ์ค๋จ ๊ณต๊ณ ๋ฅผ ๋ด์ ์ฌ์ฉ์ ํธ๋ํฝ์ ์์ฒ ์ฐจ๋จํ๊ณ ํจ์น๋ฅผ ์งํํ๋ค๋ฉด ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ํธํ ์ง ๋ชฐ๋ผ๋, ์ค๋จ๋ ๋งค ์์ ์ด ์ผ์ข ์ ์์ค๋ก ๋ณผ ์ ์์ด ์ฝ๊ฒ ์๊ฐํ ๋ฌธ์ ๋ ์๋๋๋ค.์ฆ, ์๋น์ค์ ๊ด์ ์์๋ ํผ์น๋ชปํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๋ฉด ๋ฌด์ค๋จ์ผ๋ก ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ ํธ์ด ๋ ๋์์ด ๋๋ฆฌ๋ผ๋ ๊ฒ์ ์๋ช ํฉ๋๋ค.ํ์ง๋ง ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ํ๊ณ ์ถ๋ค๊ณ ๋ฌด์กฐ๊ฑด ํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. DB ๋ ์ด์ด์ ๋ณ๊ฒฝ์ ์ ์ฉํ๋ค๋ณด๋ฉด ๋น์ ์คํ๋๊ณ ์๋ ํธ๋์ญ์ ์ Blocking์ด ๋ ์๋, ํน์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด ์ข ๋ฃ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ ์ ์ ์๋น์ค ์ด์ฉ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด๊ธฐ..
2025.03.16 -
MVCC in Mysql(with ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค)
์ด๋ฒ ๊ธ์์๋ MVCC์ ๊ฐ๋ ๊ณผ ์ด๋ป๊ฒ ๋์ํ๋ ๊ฒ์ธ์ง, ๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ ๊ตฌํํ ๋ ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์๋์ง์ ๋ํด ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ํ๋์ธ Mysql์ ํตํด ์ ๋ฆฌํ๊ณ ์ ํ๋ค. ๋ค์ด๊ฐ๊ธฐ ์์ ์ด๋ฒ ๊ธ์์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃจ๊ฒ ๋ MVCC ์ฃผ์ ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์, ๋จผ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ ๋ํ ๋ฐฐ๊ฒฝ์ง์์ด ํ์ํ๋ค. ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ํธ๋์ญ์ ๋ค์ด ๋์๋ค๋ฐ์ ์ผ๋ก ์คํ๋ ๋ ํด๋น ํธ๋์ญ์ ์ ์กฐํ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ผ๋ง๋ ์ํฅ์ ๋ฐ๊ฒํ ์ง์ ๋ํ ์์ค์ ์๋ฏธํ๋ค. READ UNCOMMITED, READ COMMITED, REPEATABLE READ, SERIALIZABLE์ ์ด 4๊ฐ์ง ์์ค์ผ๋ก ๊ตฌ์ฑ๋๊ณ ์ธ๊ธํ ์์์ ์ญ์์ผ๋ก ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง๋ค. (READ ..
2024.02.25 -
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 -
Slow Query ํ์ธ๋ฒ (in Mysql, Postgresql)
๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ์ฌ์ฉ์์ ์ ์ฅ์์๋ ์ค์ํ์ง๋ง DB ๋ ๋ฒจ์ ํจ์จ์ ์์๊ด๋ฆฌ๋ฅผ ์ํด์๋ ๊ผญ ํ์ํ ์ผ์ด๋ค. ์ด๋ป๊ฒ ์ฟผ๋ฆฌ์ ์คํ ์๊ฐ๋ค์ ํ์ธํ ์ ์์๊น? ์ง์ ์ผ์ผ์ด ์คํ์์ผ๋ณด๋ฉด์ ์๊ฐ์ ์ฌ์ผ ํ๋? ๋คํํ๋ ์ผ๋ถ DB๋ค์ ๊ทธ๋ค ์๋ฒ์์ ์ํ๋๋ ์ฟผ๋ฆฌ ์ค ์๋ฒ์ ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ Slow Query(์ฌ๋ก์ฐ ์ฟผ๋ฆฌ)๋ค์ ๋ฐ๋ก ์ ์ฅํด๋๊ณ , ์ด๋ฅผ ๊ฐ๋ฐ์๋ค์ด ํ์ธํ ์ ์๋๋ก ํ๊ณ ์๋ค. ์ด ๊ธ์์๋ ์ฌ๋ก์ฐ ์ฟผ๋ฆฌ์ ํ์ธ์ด ์ฉ์ดํ ๋ DB, Mysql๊ณผ Postgresql์์ ์ด๋ฅผ ์ค์ ํ๊ณ ํ์ธํ๋ ๋ฒ์ ๋ค๋ฃจ๋ ค๊ณ ํ๋ค. Mysql ์ค์ ๋ฒ Mysql์์๋ ์๋ ๋ด์ฉ์ my.cnf์ ์ถ๊ฐํ๋ฉด 1์ด ์ด์ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ๋ก์ฐ ์ฟผ๋ฆฌ๋ก ์์ ํ๊ณ ์ด์ ๋ํ ์์ง์ด ์์๋๋ค. ๋ฌผ๋ก ์ค์ ํ์ผ์ ์์ ํ๊ธฐ ๋๋ฌธ์ ..
2023.12.13