๐พBackEnd/โ DataBase(4)
-
MySQL - ์ธ๋ฑ์ค
์ธ๋ฑ์ค๋ฅผ ์ ์ฌ์ฉํด์ผ ๋๋์ง ์๊ธฐ ์ํด์๋ ๋์คํฌ ์ฝ๊ธฐ ๋ฐฉ์์ ๋ํด ๊ณต๋ถ๋ฅผ ํด์ผ๋๋ค. ์ด ํฌ์คํธ๋ ์ธ๋ฑ์ค์ ๊ด๋ จ๋ ๋ด์ฉ์ด๊ธฐ ๋๋ฌธ์ ๋์คํฌ ์ฝ๊ธฐ ๋ฐฉ์์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ณ ๋์ด๊ฐ๊ฒ ๋ค. 2๊ฐ์ ์ฝ๊ธฐ ๋ฐฉ์์ ์ดํดํ๋ฉด ์ข์๋ฐ ๋๋คI/O์ ์์ฐจI/0 ๋ฐฉ์์ด๋ค. ๋๋คI/O๋ฐฉ์๊ณผ ์์ฐจI/O ๋ฐฉ์์ ๊ณตํต์ ์ธ ํ๋์ด ์๋๋ฐ ํ๋ํฐ๋ฅผ ๋๋ ค์ ์ฝ์ด์ผ ํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น๋ก ๋์คํฌ ํค๋๋ฅผ ์ด๋์ํจ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ์ฐจ์ด๊ฐ ๋๋ ๋ถ๋ถ์ ์์ฐจI/O๋ 1๋ฒ์ ์์คํ ์ฝ์ ํธ์ถํ๊ณ ๋๋คI/O๋ 3๋ฒ์ ํธ์ถ์ ํ์๋ค. ์ด๋ ๊ฒ ์ดํด๋ณด๋ฉด ์์ฐจI/O๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์จ์ด ์ข๊ฒ ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋คI/O๋ฅผ ์ฌ์ฉํ๊ณ ์๋ MySQL์ ํ์ค์ ํน์ฑ์ ์์ฐจI/O๋ก ๋ณ๊ฒฝํ๊ธฐ๋ ์ด๋ ต๋ค. ๊ทธ๋์ ๋๋คI/O๋ฅผ ์ฌ์ฉ์ ํ๋ฉด์ ์ ๊ทผํ๋..
2023.02.28 -
MySQL - ๊ฒฉ๋ฆฌ ์์ค
MYSQL ๊ฒฉ๋ฆฌ ์์ค ๊ฒฉ๋ฆฌ ์์ค ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ฒ๋ฆฌ๋ ๋ ํน์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ํ ์ด๋ธ์ ๋ณผ ์ ์๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. 1. Read Uncommitted Read Uncommitted ๊ฒฉ๋ฆฌ ์์ค์ ๊ฐ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝ ๋ด์ฉ์ด commit , Rollback ์ฌ๋ถ์ ์๊ด์์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณด์ธ๋ค. (Dirty Read) → ์ฌ์ฉ์ A๊ฐ insert๋ฅผ ํ๊ณ ์ฌ์ฉ์ B๊ฐ commit ์ด ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ select๋ก ์ ๊ทผ์ ํ๋ค. → ๋ง์ฝ์ Insert ํ๋ ๊ฒฝ์ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ๋กค๋ฐฑ์ ํ๊ฒ ๋๋ค๋ฉด ์ฌ์ฉ์B๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผ์ ํ๊ณ ์์๊น? — ๋กค๋ฐฑ์ด ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผ → ์ด์ฒ๋ผ Read Uncommitted๋ ์ ํฉ์ฑ์ ๋ง์ ๋ฌธ์ ๊ฐ ..
2023.02.28 -
MYSQL - LOCK
Lock ๋ฝ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์์ฑ์ ๋ณด์ฅํ๋ค. ์ฆ. ๋ฝ์ ๋์์ฑ์ ์ ์ดํ ๋ ๋ฝ์ ๋ฒ์๋ฅผ ์ต์ํ๋ฅผ ํ๋๊ฒ ์ค์ํ๋ค. ์๋ํ๋ฉด ๋ฝ์ ๋ฒ์๊ฐ ๊ธธ์ด์ง๋ฉด ๋์ง์ค์ธ ์ปค๋ฅ์ ์ด ๋ง์์ง๊ณ ๋์ค์๋ ์ปค๋ฅ์ ํ์ด ๊ณ ๊ฐ๋ก ์ด์ด์ง ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก MySQL์์๋ ํธ๋์ญ์ ์ปค๋ฐ , ๋ก๋ฐฑ์์ ์ ๋ฝ์ด ํ๋ฆฐ๋ค. ํธ๋์ญ์ ์ด ๊ณง ๋ฝ์ ๋ฒ์๊ฐ ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. MySQL์์ ๋ฝ์ ํฌ๊ฒ InnoDB ์์ง , MySQL ์์ง ๋ ๋ฒจ๋ก ๋๋ ์ ์๋ค. ๐ ๋น๊ด์ ๋์์ฑ ์ ์ด(PCC, Pessimistic Concurrency Control) ๋น๊ด์ ๋ฝ์ด๋ผ๊ณ ๋ ํ๋ฉฐ ํธ๋์ญ์ ์ด ์ถฉ๋ํ๋ ๊ฐ์ ํ์ ์ ๊ธ์ ๊ฑฐ๋ ๋ฐฉ์ ์ผ๋ฐ์ ์ผ๋ก Shared Lock, Exclusive Lock์ ํตํด ์ด๋ฅผ ๊ตฌํํ๋ค. ๐ ๋๊ด์ ๋์ ์ํ ์ ์ด(OCC, Opti..
2023.02.28 -
MySQL ์์ง ์ํคํ ์ฒ
๐ฉ MySQL ์์ง ์ํคํ ์ฒ MySQL์ํคํ ์ฒ์ ๋ํด ์์๋ณด์ MySQL ์๋ฒ๋ ํฌ๊ฒ MySQL ์์ง + ์คํ ๋ฆฌ์ง ์์ง์ด ์๋ค. MySQL์์ง ํฌ๊ฒ 3๊ฐ์ง ๊ธฐ๋ฅ์ ํ๋ค. (์ฟผ๋ฆฌ ํ์ฑ, ์ฟผ๋ฆฌ ์คํฐ๋ง์ด์ง, ์ฟผ๋ฆฌ ์คํ์ ํ๋ค.) ์ฟผ๋ฆฌ ํ์ฑ ๊ฐ๋ฐ์๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก DB์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ฉด SQL์ด ์ดํด ๊ฐ๋ฅํ๊ฒ ๋ณ๊ฒฝํ๋ค. ์ฟผ๋ฆฌ ์คํฐ๋ง์ด์ง ํ์ฑ์ ํตํด ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์คํฐ๋ง์ด์ง์ ํ์ฌ ์ต์ ํ๋ฅผ ํ๋ค. ์ฟผ๋ฆฌ ์คํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ค. ์คํ ๋ฆฌ์ง ์์ง MyISAM ์ฒ์์ ๊ธฐ๋ณธ ์์ง์ผ๋ก ์ฌ์ฉ์ ํ์๋ค. ํค ์บ์ฑ์ด๋ผ๋ ์ฅ์ ์ ๊ฐ์ง๋ฉฐ ํธ๋์ญ์ ์ ์ง์ํ์ง ์๋๋ค. InnoDB ๋ฒํผ๋ง, FK์ ์ฝ ์กฐ๊ฑด, ์ถฉ๋ ๋ณต๊ตฌ, ํธ๋์ญ์ ์ ์ง์ํ์ฌ ์ฃผ๋ก InnoDB๋ฅผ ์ฌ์ฉํ๋ค. ๋ฉ๋ชจ๋ฆฌ ์บ์๋ฅผ ํตํ์ฌ ๋์คํฌI/O ์์ ์ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์(๋ฒํผ ํ)..
2023.02.10