002. DBMS and Buffer - llighter/database GitHub Wiki
Memory Hierachy Wikipedia
Transaction Commit ... SQL Database Engine Blog
1. ๊ณต์ง ๋ฐฅ์ ์กด์ฌํ ๊น?
- ๊ธฐ์ต ๋น์ฉ : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์๋ชจ๋๋ ๋น์ฉ
- ์ ๊ทผ ์๋ <-> ๊ธฐ์ต ๋น์ฉ : ํธ๋ ์ด๋์คํ
2. DBMS์ ๊ธฐ์ต์ฅ์น์ ๊ด๊ณ
- HDD
- 2์ฐจ ๊ธฐ์ต์ฅ์น
- Memory
- 1์ฐจ ๊ธฐ์ต์ฅ์น
- ๋ฒํผ๋ฅผ ํ์ฉํ ์๋ ํฅ์
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฌ๋ค๋ฉด ๋์คํฌ ์ ๊ทผ์ ์ค์ฌ์ค๋ค.
- ์ฑ๋ฅ ํฅ์์ ๋ชฉ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ : ๋ฒํผ(buffer) ๋๋ ์บ์(cache)
- ๋ฒํผ ๋งค๋์ : '๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ, ์ด๋ ์ ๋์ ๊ธฐ๊ฐ๋์ ์ฌ๋ฆด์ง' ๊ด๋ฆฌ
3. ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ ๋ ๊ฐ์ ๋ฒํผ
DBMS๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ฒ ๋ ์ข ๋ฅ์ด๋ค.
- ๋ฐ์ดํฐ ์บ์
- ๋ก๊ทธ ๋ฒํผ
๋ฐ์ดํฐ ์บ์
- ๋์คํฌ์ ์๋ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง
- '๋์คํฌ๋ฅผ ๊ฑด๋๋ฆฌ๋ ์๋ ๋ถํํด์ง๋ค.'
๋ก๊ทธ ๋ฒํผ
- ๊ฐฑ์ ์ฒ๋ฆฌ์ ๊ด๋ จ(
INSERT
,DELETE
,UPDATE
,MERGE
) - DBMS๋ ๊ฐฑ์ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ SQL ๊ตฌ๋ถ์ ๋ฐ์ผ๋ฉด ๋ก๊ทธ ๋ฒํผ ์์ ๋ณ๊ฒฝ ์ ๋ณผ๋ฅด ๋ณด๋ด๊ณ ์ดํ์ ๋์คํฌ ๋ณ๊ฒฝ์ ์ํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐฑ์ ์ฒ๋ฆฌ๋ SQL ๊ตฌ๋ฌธ์ ์คํ ์์ ๊ณผ ์ ์ฅ์์ ๊ฐฑ์ ํ๋ ์์ ์ ์ฐจ์ด๊ฐ ์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ด๋ค.
- ๋์คํฌ I/O๋ ๋ถํ๊ธฐ ํฌ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ์ฌ ํ๋ฒ์ ์ ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํ๋ค.
4. ๋ฉ๋ชจ๋ฆฌ์ ์ฑ์ง์ด ์ด๋ํ๋ ํธ๋ ์ด๋์คํ
- ํ๋ฐ์ฑ์ ๋ฌธ์ ์
- ์ฅ์ ๋ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ ์ ์ค๋ก ์ธํ ๋ถ์ ํฉ ๋ฐ์
- ๋ฐ์ดํฐ ์บ์์ ๊ฒฝ์ฐ ์๋ณธ ๋ฐ์ดํฐ๋ ๋จ์ ์๊ธฐ ๋๋ฌธ์ ๋ค์ ์ฝ์ผ๋ฉด ๋จ
- ๋ก๊ทธ ๋ฒํผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐฑ์ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ ex. ์ํ ์ ์ถ๊ธ
- ๋ฐ๋ผ์ ์ปค๋ฐ(Commit) ์์ ์์ ๊ฐฑ์ ์ ๋ณด๋ฅผ ๋ก๊ทธ ํ์ผ(Disk)์ ์ด๋ค.
- ์ปค๋ฐ์ผ๋ก ์ธํด ๋์คํฌ์ ๋๊ธฐ ์ ๊ทผ ํ ๋ ์ง์ฐ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์
- ๋ฐ์ดํฐ ์ ํฉ์ฑ <-> ์ฑ๋ฅ : ํธ๋ ์ด๋ ์คํ
5. ์์คํ ํน์ฑ์ ๋ฐ๋ฅธ ํธ๋ ์ด๋์คํ
- ๋ฐ์ดํฐ ์บ์์ ๋ก๊ทธ ๋ฒํผ์ ํฌ๊ธฐ
- ์ด๊น๊ฐ : ๋ฐ์ดํฐ ์บ์ > ๋ก๊ทธ ๋ฒํผ
- DB๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒ์์ ๋ฉ์ธ์ผ๋ก ์ฒ๋ฆฌํ๋ค๊ณ ๊ฐ์ ํ์๊ธฐ ๋๋ฌธ
- cf. MySQL์ ๋งค๋ด์ผ : '์๋ฒ๊ฐ DB์ ์ฉ์ด๋ผ๋ฉด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ 80%๋ฅผ ๋ฒํผ ํ๋ก ํ ๋นํด๋ ๊ด์ฐฎ๋ค.'
- ๊ฒ์๊ณผ ๊ฐฑ์ ์ค์์ ์ค์ํ ๊ฒ
- ๊ฒ์ <-> ๊ฐฑ์ : ํธ๋ ์ด๋์คํ
- DBMS ์ค ์๋์ผ๋ก ์ค์ ํ๋ ๊ธฐ๋ฅ์ด ์๊ธฐ๋ ํ์ง๋ง ๋ฆฌ์คํฌ๊ฐ ์๋ค.
6. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ '์ํน ๋ฉ๋ชจ๋ฆฌ'
- ์ธ์ ์ฌ์ฉ๋ ๊น?
- ์ํน ๋ฉ๋ชจ๋ฆฌ(Working Memory): ์ ๋ ฌ ๋๋ ํด์ ๊ด๋ จ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ ์์ ์ฉ ์์ญ
- ์ ๋ ฌ : ORDER BY, ์งํฉ ์ฐ์ฐ, ์๋์ฐ ํจ์ ๋ฑ
- ํด์ : ํ ์ด๋ธ ๋ฑ์ ๊ฒฐํฉ
- ORACLE์ ๊ฒฝ์ฐ PGA(Program Global Area) ๋ผ๊ณ ๋ถ๋ฆ
- ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ๋๊ณ , ์ข ๋ฃ๋๋ฉด ํด์ ๋๋ ์์ ์์ญ
- ์ด ์์ญ์ด ๋ค๋ฃจ๋ ค๋ ๋ฐ์ดํฐ์๋ณด๋ค ์์ ๋ถ์กฑํด์ง๋ ๊ฒฝ์ฐ DBMS๋ ์ ์ฅ์(Disk)๋ฅผ ์ฌ์ฉํ๋ค.
- cf. OS์์์ ์ค์(swap)
- Oracle : ์์ ํ ์ด๋ธ ์คํ์ด์ค(TEMP Tablespace)
- ๋ถ์กฑํ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น?
- ์ ์ฅ์(Disk) ์ ๊ทผ์ผ๋ก ์ ์ฒด์ ์ธ ์๋ ์ ํ