Database/DB ์คํฐ๋(15)
-
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 -
์๋ธ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ๋ํ ์คํด
๊ฐ์ธ์ ์ธ ๊ฒฝํ ์, ์ทจ์ ์ ์ค๋นํ๋ ๊ฐ๋ฐ์ ์ง๋ง์ ๋ถ๋ค์ด๋ ํน์ ์ ์ ๋ด์ง ์ฃผ๋์ด ๊ฐ๋ฐ์ ๋ถ๋ค ์ฌ์ด์๋ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ๊ฒ์ ์ฑ๋ฅ์ด ๋๋ผ๋งํฑํ๊ฒ ๋๋น ์ง ๊ฒ์ด๋ผ๋ ํต๋ ์ด ์กด์ฌํ๋ ๊ฒ ๊ฐ๋ค. ๋ ๋ํ ๊ทธ๋ ๊ฒ ์๊ฐํด์์๋๋ฐ ์ด๊ฒ ์ ๋ง ๋ง๋์ง, ์๋๋ฉด ์คํด์ธ ๊ฒ์ธ์ง ํ์ธํด๋ณด๋ คํ๋ค. ์๋ธ ์ฟผ๋ฆฌ๋? ์๋ธ ์ฟผ๋ฆฌ๋ ๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ์กด์ฌํ๋ ์ํฉ์์ ๋ฉ์ธ ์ฟผ๋ฆฌ ๋ด์ ํฌํจ๋ ๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ค ์ ์ ํฌํจ๋ ์ฟผ๋ฆฌ์ธ์ง์ ๋ฐ๋ผ ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ(SELECT ๋ฌธ), ์ธ๋ผ์ธ ๋ทฐ(FROM ์ ), ์๋ธ ์ฟผ๋ฆฌ(WHERE ์ , ๊ทธ๋ฅ ์๋ธ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ ๋ฏ...) ๋ฑ์ ๋ช ์นญ์ผ๋ก ๋ถ๋ฆฐ๋ค. ์๋๋ ์๋ธ ์ฟผ๋ฆฌ์ ์์์ด๋ค. -- ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ SELECT p.id AS id, (SELECT email FROM accou..
2024.01.21 -
SGA vs PGA (in Oracle)
ํ์ฌ DB ์คํฐ๋์ ์ผํ์ผ๋ก '์น์ ํ SQL ํ๋'์ ํ๋ฒ ๋ ์ฝ๊ณ ์๋ค. ์ด๋ฒ ํํธ๋ ์ํธ ๋จธ์ง ์กฐ์ธ + ํด์ ์กฐ์ธ ์ธ๋ฐ, ๊ฐ์ธ์ ์ผ๋ก ํด๋น ์์ ์ ์ด๋ฏธ 1ํ๋ ํ ์ํฉ์ด๋ผ ๋ ์กฐ์ธ์ด ๋๋ต์ ์ผ๋ก ์ด๋ป๊ฒ ์๋ํ๊ณ , ์ด๋ค ์ํฉ์์ ํ์ฉ๋๋์ง๋ ์ดํดํ๊ณ ์๋ค. ๋ค๋ง 1ํ๋ ์ ์ ๋ชฐ๋ผ์ ๊ทธ๋ฅ ๋์ด๊ฐ๋ ์ค๋ผํด์ PGA์ SGA์ ๊ฐ๋ ์ด ์๋๋ฐ, ์ด๋ฒ ๊ธฐํ์ ์ด๋ฅผ ๊ณต๋ถํ๊ณ ๋์ด๊ฐ๋ฉด ์ข๊ฒ ๋ค ์ถ์ด ๊ณต๋ถํ ๋ด์ฉ๋ค์ ๊ธฐ๋กํด๋๊ธฐ ์ํด ์ด ๊ธ์ ์์ฑํ๋ค. ์ด ๊ธ์์๋ ์ฑ ์์ ๊ฐ๋จํ๊ฒ ๋ค๋ค์ง ๋ฐ์ดํฐ ์กฐํ ์ SGA์ PGA ์ ๊ทผ์ ์๋ ์ฐจ์ด์ ์ค์ ์ ๋๊ณ ๋ค๋ค๋ณด๋ คํ๋ค. ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ํ ์๊ฐ SGA SGA๋ System Global Area์ ์ฝ์๋ก, DB ๋ด ํ๋๋ง ์กด์ฌํ๋ฉด์ ๋ชจ๋ ์ธ์ ์ด ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค. SG..
2024.01.14 -
๋ณตํฉ ์ธ๋ฑ์ค ํ์ฉ ๊ฒฝ์ฐ์ ์
๋ค์ํ ๋ฐ์ดํฐ์ ์ ๊ทผ ํํ์ ์ผ์ผ์ด ๋์ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋ง์ด ๋ง๋ค ์ ์๋ ํ๊ฒฝ์ด๋ผ๋ฉด ์ธ๋ฑ์ค ์์ฑ์ ์์ด ๊ณ ๋ฏผ์ ์ฌ์ง๊ฐ ์ ๊ฒ ์ง๋ง, ์์ฝ๊ฒ๋ ์ธ๋ฑ์ค๊ฐ ๋ง์์ง๋ฉด ๋ง์์ง์๋ก ๊ทธ์ ๋ฐ๋ฅธ ์ฌ์ด๋ ์ดํํธ(DML ์ฑ๋ฅ ์ ํ, ์ ์ฅ ๊ณต๊ฐ ์ฐจ์ง)๊ฐ ์กด์ฌํ๋ค. ๋ฐ๋ผ์ ์ ์ ์์ ์ธ๋ฑ์ค๋ฅผ ์ ์งํ๋ ๋์์ ๋ค์ํ ๋ฐ์ดํฐ ์ ๊ทผ ํํ์ ๋ํด ์ธ๋ฑ์ค ์ค์บ์ ์ง์ํ๋ ๊ฒ์ ์ค์ํ๋ค. ์ด๋ฅผ ์ํด์๋ ๋ณตํฉ ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ผ๋ก ํ๋์ ์ธ๋ฑ์ค๊ฐ ์ฌ๋ฌ ์ํฉ์ ์ปค๋ฒํ ์ ์๋๋ก ํ ์ด๋ธ ์ค๊ณ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค. ํด๋น ๊ธ์์๋ ์ด๋ฅผ ๋๊ธฐ ์ํด ๋ณตํฉ ์ธ๋ฑ์ค๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์๋ํ๋์ง ์์๋ณด๊ณ , ๋ณตํฉ ์ธ๋ฑ์ค๊ฐ ์๋ํ๋ ๊ฒฝ์ฐ์ ์์ ๋ํด ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค. ์ด ๊ธ์ Mysql ๊ธฐ์ค์ผ๋ก ์์ฑ๋์๋ค. ๋ณตํฉ ์ธ๋ฑ์ค ์๋ ๋ฐฉ์ ๋ณตํฉ ์ธ๋ฑ์ค๋ ๋ ์ด์์ ์นผ๋ผ์ ํตํด ..
2023.12.31 -
๋ฑํธ ์ฐ์ฐ์์ LIKE ์ฐ์ฐ์ ๊ฐ ๋น๊ต
์ผ๋ง ์ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค๊ฐ ๋ฌธ๋ ๋ฌธ์์ด ์นผ๋ผ์ ํผ์ผํธ(%) ๊ธฐํธ์์ด LIKE๋ฅผ ์ฐ๋ ๊ฒ๊ณผ ๊ณง๋ฐ๋ก ๋ฑํธ ์ฐ์ฐ์๋ฅผ ์ฐ๋ ๊ฒ์ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์๋ฌธ์ด ์๊ฒผ๋ค. ๋ค๋ง ์ด๋ฅผ ๊ณง๋ฐ๋ก ํด๊ฒฐํ์ง ์์๋ค๊ฐ ์๊ณ ์์๋๋ฐ, ์คํฐ๋๋ฅผ ์ํด ์ฑ ์ ์ฝ๋ค๊ฐ LIKE ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋์ ๋ฑํธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋ ๋ด๋ถ์ ์ธ ์๋ ๋ฐฉ์์ด ์ฐจ์ด๊ฐ ์๋ ๊ฒ์ผ๋ก ์๊ฐ๋์ด ์ด๋ฅผ ์ ๋ฆฌํ๊ณ ์ ์ด ๊ธ์ ์์ฑํ๋ค. ํด๋น ๋ฌธ์๋ Mysql์ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ค๋ฅธ DB์ ๊ฒฝ์ฐ ๋ค๋ฅด๊ฒ ์๋ํ ์ฌ์ง๊ฐ ์์ต๋๋ค. LIKE vs Equal(=) LIKE๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์์ผ๋์นด๋์ ๋์์ ๋ฐ์์ ๋ ์์ ๋ก์ด ๋ฐฉ์์ ๋ฌธ์์ด ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋๋ถ๋ถ์ด ์๋ ์ฌ์ค์ด๋ ๋์ด๊ฐ๋๋ก ํ์. (Equal์์๋ ์์ผ๋์นด๋๋ค๋ ์ ๋ถ ๋น๊ต ๋ฌธ์์ด์ ์ผ๋ถ๋ก..
2023.12.17