๐งท Oracle ์ํคํ ์ฒ
Oracle ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์ ์ด๋ฅผ ์ก์ธ์ค ํ๋ ํ๋ก์ธ์ค
์ฌ์ด์ SGA
(System Global Area)๋ผ๊ณ ํ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์บ์ ์์ญ์ ๋์ด ๊ตฌ์ฑ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database) : ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์งํฉ์ผ๋ก, ์ฃผ์ ํ์ผ๋ก๋ ๋ฐ์ดํฐ ํ์ผ(Datafile), Redo Log ํ์ผ, Control ํ์ผ์ด ํฌํจ๋๋ค.
- ์ธ์คํด์ค(Instance) :
SGA
(๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ)์ ์ด๋ฅผ ์ก์ธ์ค ํ๋ํ๋ก์ธ์ค
์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Oracle์์๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ํ๋์ ์ธ์คํด์ค๊ฐ ์ ๊ทผํ์ง๋ง, RAC(Real Application Cluster) ํ๊ฒฝ์์๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๊ฐ ๋์์ ์ก์ธ์ค ํ ์ ์๋ค.
โ RAC (Real Application Cluster)
๊ณผ๊ฑฐ์๋ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๊ฐ ๋์ผํ ๋ฐ์ดํฐ ํ์ผ์ ๊ณต์ ํ๋ ๊ณต์ ๋์คํฌ(Shared Disk) ๋ฐฉ์์ ์ฌ์ฉํ์ง๋ง, ํ์ฌ๋ ๊ธฐ์กด ๋ชจ๋ธ์ ํ์ฅํ ๊ณต์ ์บ์(Shared Cache) ๋ฐฉ์์ ์ง์ํ๋ฉฐ, ์ด๋ฅผ ์ํด Global Cache ๊ฐ๋ ์ ์ ์ฉํ๋ค
- Global Cache ํ์ฉ
- ๊ฐ ์ธ์คํด์ค๋ ๋ก์ปฌ ์บ์์ ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ด์ ๋ ธ๋์์ ์ ์ก ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ด๋ฅผ ์ํด ๊ฐ Instance๋ฅผ ๊ณ ์์ ์ ์ฉ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐํ๋ค.
- Dirty ๋ฒํผ ๊ด๋ฆฌ
- ๋ค๋ฅธ ์ธ์คํด์ค์์ ๊ฐฑ์ ํ๊ณ ์์ง ์ปค๋ฐ๋์ง ์์ (Active ์ํ์)๋ธ๋ก๋ ๋์คํฌ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด Dirty ๋ฒํผ (๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ๊ฐ์ ๋๊ธฐํ๋์ง ์์ ๋ฒํผ) ์ํ๋ก ์๋ก ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ๊ฐฑ์ ๋๋ค.
- ์ด๋ฅผ ํตํด ๋๊ธฐํ๋ฅผ ์ต์ ํ ํ๊ณ ์ฑ๋ฅ์ ๊ทน๋ํํ๋ค.
- ์ฅ์
- ๊ณ ๊ฐ์ฉ์ฑ : ํน์ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์ง์์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
- ํ์ฅ์ฑ : ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํ์ฌ ์ฑ๋ฅ์ ํ์ฅ๊ฐ๋ฅ ํ๋ค.
โ SQL Server ์ํคํ ์ฒ
- ํ๋์ ์ธ์คํด์ค๋น ์ต๋ 32,767๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
- ์ค์น ์ ๊ธฐ๋ณธ์ ์ผ๋ก
master
,model
,msdb
,tempdb
๋ฑ์ ์์คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ฑ๋๋ฉฐ, ์ฌ๊ธฐ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ๋ ๊ตฌ์กฐ์ด๋ค. - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ ๋ ์ฃผ ๋ฐ์ดํฐ ํ์ผ(main) ๊ณผ ํธ๋์ญ์ ๋ก๊ทธ ํ์ผ ์ด ๋ฐ๋์ ํฌํจ๋๋ค.
- ํ์ผ ํ์ฅ์
- ์ฃผ ๋ฐ์ดํฐ ํ์ผ:
.mdf
(Main Data File) - ํธ๋์ญ์
๋ก๊ทธ ํ์ผ:
.ldf
(Log Data File) - ๋ณด์กฐ ๋ฐ์ดํฐ ํ์ผ:
.ndf
(๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ถ๊ฐ ๊ฐ๋ฅ)
- ์ฃผ ๋ฐ์ดํฐ ํ์ผ:
๐๏ธ ํ๋ก์ธ์ค
Oracle์ ํ๋ก์ธ์ค ์งํฉ์ ํฌ๊ฒ ์๋ฒ ํ๋ก์ธ์ค(Server Process)์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค(Background Process)๋ก ๋๋๋ค.
- Server Process : ์ ๋ฉด์์ ์ฌ์ฉ์๊ฐ ๋์ง๋ ์์ฒญ์ ์ํํ๋ ํ๋ก์ธ์ค
- Background Process : ์ง์ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์ง๋ง, ๋ด๋ถ์ ์ผ๋ก ์ฃผ์ด์ง ์ญํ ์ํํ๋ ํ๋ก์ธ์ค
โ SQL Server
- SQL Server์ ์ค๋ ๋(Thread)๊ธฐ๋ฐ ์ํคํ ์ฒ์ด๋ฏ๋ก ํ๋ก์ธ์ค ๋์ ์ฐ๋ ๋ ํํ์ ์ฌ์ฉํ๋ค.
- ์๋ฒ ํ๋ก์ธ์ค์ ํด๋นํ๋ ์์ ์ Worker Thread๊ฐ ๋ด๋นํ๋ค.
1. Server Process
(1) ์ฃผ์ ์ญํ
- ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ์ ์ฉ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋์ด ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- SQL์ ํ์ฑ(parsing) ํ๊ณ , ํ์์ ์ต์ ํ(optimization)๋ฅผ ์ํํ ํ, ์ปค์(cursor)๋ฅผ ์ด์ด SQL์ ์คํํ๋ค.
- ๋ฐ์ดํฐ ๋ธ๋ก์ ์ฝ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ํ, ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๊ฒฐ๊ณผ ์งํฉ(Result Set)์ ์์ฑํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ๋ค.
- ์ง์ ์ฒ๋ฆฌํ ์ ์๋ ์์
์ OS, I/O ์๋ธ์์คํ
, ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค ๋ฑ์ ๋์ ์ฒ๋ฆฌํ๋๋ก ์์คํ
Call์ ํตํด ์์ฒญํ๋ค.
- ์์:
- ๋ฐ์ดํฐ ํ์ผ์์ DB ๋ฒํผ ์บ์๋ก ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ์ฌ
- Dirty ๋ธ๋ก(์์ ๋์์ง๋ง ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์ ๋ธ๋ก)์ ์บ์์์ ๋ฐ์ด๋ด๊ณ Free ๋ธ๋ก ํ๋ณด
- Redo ๋ก๊ทธ ๋ฒํผ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ์ฌ ํธ๋์ญ์ ์ ๋ฌด๊ฒฐ์ฑ ์ ์ง
- ์์:
(2) ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฐ๊ฒฐ ๋ฐฉ์
โ ์ ์ฉ ์๋ฒ ๋ฐฉ์ (Dedicated Server Mode)
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์ค๋(Listener)๋ฅผ ํตํด ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ด๋ฉด, ํ๋์ ๊ฐ๋ณ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ณ , PGA(Program Global Area) ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๋ค.
- ์๋ก์ด ์์ฒญ๋ง๋ค ๋ณ๋์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฏ๋ก ๋น์ฉ์ด ๋์ ๋ฐฉ์์ด๋ค.
- SQL์ ์คํํ ๋๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ์ ์์ฑํ๋ฉด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ฏ๋ก, Connection Pooling ๊ธฐ๋ฒ์ ์ ์ฉํด์ผ ํ๋ค.
โ
Connection Pool
→ ์ต์ด ์ฐ๊ฒฐ์ ๋งบ์ ํ, ์์
์ด ๋๋๋ ์ด๋ฅผ ํด์ ํ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์์ ์ ์ง(pooling) ํ์ฌ, ํ์ํ ๋ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์
โก ๊ณต์ ์๋ฒ ๋ฐฉ์ (Shared Server Mode)
- ํ๋์ ์๋ฒ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์ ์ธ์ ์ด ๊ณต์ ํ๋ ๋ฐฉ์
- ๋ฏธ๋ฆฌ ์ฌ๋ฌ ๊ฐ์ ์๋ฒ ํ๋ก์ธ์ค๋ฅผ ๋์๋๊ณ , ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ํ์ํ ๋๋ง๋ค ์ฌ์ฌ์ฉํ๋ค.
- Connection Pooling ๊ธฐ๋ฒ์ DBMS ๋ด๋ถ์ ๊ตฌํํ ๋ฐฉ์๊ณผ ์ ์ฌํ๋ค.
โข ์ ์ฉ ์๋ฒ ๋ฐฉ์ vs ๊ณต์ ์๋ฒ ๋ฐฉ์
- ์ ์ฉ ์๋ฒ ๋ฐฉ์: ์ฑ๋ฅ์ด ๋์ง๋ง, ๋์ ์ ์์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ์ฆ๊ฐํ์ฌ ์๋ฒ ๋ถ๋ด์ด ์ปค์ง ์ ์๋ค.
- OLTP(์งง๊ณ ๋น๋ฒํ ํธ๋์ญ์ , ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๊ฒฝ)์์๋ ๋น ๋ฅธ ์๋ต ์๋์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ค์ํ๋ฏ๋ก Connection Pooling ๊ธฐ๋ฒ์ ํ์ฉํด์ผ ํ๋ค.
- ๊ณต์ ์๋ฒ ๋ฐฉ์: ์๋ฒ ์์์ ์ ์ฝํ ์ ์์ง๋ง, ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์ผํ ํ๋ก์ธ์ค๋ฅผ ๊ณต์ ํ๋ฏ๋ก CPU ๋ถํ๊ฐ ๋๊ฑฐ๋ ๋ณต์กํ SQL์ ์คํํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
2. Background Process
ํ๋ก์ธ์ค | ์ค๋ช |
---|---|
SMON (System Monitor) | ์ฅ์ ๋ฐ์ ํ ์ฌ๊ฐ๋ ์ ์ธ์คํด์ค ๋ณต๊ตฌ๋ฅผ ์ํํ๋ฉฐ, ์์ ์ธ๊ทธ๋จผํธ ๋ฐ ์ต์คํ ํธ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ค. |
PMON (Process Monitor) | ์ด์์ด ์๊ธด ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฆฌ์์ค๋ฅผ ๋ณต๊ตฌํ๋ค. |
DBWn (Database Writer) | ๋ฒํผ ์บ์์ ์๋ Dirty ๋ธ๋ก์ ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋กํ๋ค. |
LGWR (Log Writer) | Redo ๋ก๊ทธ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ๋ค. |
ARCn (Archiver) | Redo ๋ก๊ทธ๊ฐ ๋ฎ์ด์ฐ๊ธฐ ๋๊ธฐ ์ ์ Archive ๋ก๊ทธ ๋๋ ํ ๋ฆฌ์ ๋ฐฑ์ ํ๋ค. |
CKPT (Checkpoint) | ๋ง์ง๋ง Checkpoint ์ดํ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋กํ๋๋ก ํธ๋ฆฌ๊ฑฐํ๋ฉฐ, ๊ธฐ๋ก ์๋ฃ ํ Checkpoint ์ ๋ณด๋ฅผ ์ปจํธ๋กค ํ์ผ๊ณผ ๋ฐ์ดํฐ ํ์ผํค๋์ ์ ์ฅํ๋ค. |
RECO (Recoverer) | ๋ถ์ฐ ํธ๋์ญ์ ๊ณผ์ ์ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. |
๐๏ธ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์ฅ ๊ตฌ์กฐ
1. Datafile
(1) Physical
Data File : ๋์คํฌ ์์ ๋ฌผ๋ฆฌ์ ์ธ OS ํ์ผ
- ๋ฐ์ดํฐ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ง์ ๋ฐ์ดํฐ ํ์ผ์ ์ ํํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ํ์ผ ํ ๋น ๋ฐ ๊ด๋ฆฌ๋ DBMS๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ค.
(2) Logical
โ Tablespace : ์ธ๊ทธ๋จผํธ๋ฅผ ๋ด๋ ์ปจํ ์ด๋
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฅ ํฐ ๋ ผ๋ฆฌ์ ์ธ ๋จ์์ด๋ค.
์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ํ์ผ๋ก ๊ตฌ์ฑ
๋์ด ์๋ค.- ํ ์ด๋ธ์คํ์ด์ค๋ฅผ ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ํ์ผ ๊ฒฐํฉ์ ์ค์ผ ์ ์์ด ์ฑ๋ฅ์ ํฅ์ํ ์ ์๋ค.
- ์ฌ์ฉ์๋ ์ธ๊ทธ๋จผํธ๊ฐ ์ ์ฅ๋ ํ ์ด๋ธ์คํ์ด์ค๋ฅผ ์ง์ ํ ์ ์์ง๋ง, ํ ์ด๋ธ์คํ์ด์ค ๋ด์์ ์ค์ ๋ฐ์ดํฐ ํ์ผ์ ์ ํํ๊ณ ์ต์คํ ํธ๋ฅผ ํ ๋นํ๋ ๊ฒ์ DBMS๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ํ
์ด๋ธ ์คํ์ด์ค์ ์ธ๊ทธ๋จผํธ๋ 1 : N ๊ด๊ณ
- ์ฆ, ํ๋์ ํ ์ด๋ธ์คํ์ด์ค์ ์ฌ๋ฌ ๊ฐ์ ์ธ๊ทธ๋จผํธ๊ฐ ํฌํจ๋ ์ ์๋ค.
- ํ์ง๋ง, ํ๋์ ์ธ๊ทธ๋จผํธ๊ฐ ์ฌ๋ฌ ํ ์ด๋ธ์คํ์ด์ค์ ๊ฑธ์ณ ์ ์ฅ๋ ์ ์๋ค.
- ๋ค๋ง, ํ๋์ ์ธ๊ทธ๋จผํธ๋ ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์ผ์ ๊ฑธ์ณ ์ ์ฅ๋ ์ ์๋ค. (ํ ์ด๋ธ์คํ์ด์ค๊ฐ ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ)
โก Segment : ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ์ ๊ตฌ์ฑํ๋ ๋จ์
- ํ ์ด๋ธ, ์ธ๋ฑ์ค ๋ฑ์ ์ค๋ธ์ ํธ(Object)๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํ์ํ ๊ณต๊ฐ์ด๋ค.
ํ๋ ์ด์์ Extent
๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ ์ฅ๊ณต๊ฐ์ ํ์๋ก ํ๋ค๋ ๊ฒ์ ํ ๊ฐ ์ด์์ Extent๋ฅผ ์ฌ์ฉํจ์ ์๋ฏธํ๋ค.- ํน์ ์ธ๊ทธ๋จผํธ์ ํ ๋น๋ ๋ชจ๋ ์ต์คํ
ํธ๋ ํด๋น ์ธ๊ทธ๋จผํธ๊ฐ ์ํ ํ
์ด๋ธ์คํ์ด์ค ๋ด์์๋ง ์กด์ฌํ ์ ์๋ค.
- ์ฆ, ํ๋์ ์ธ๊ทธ๋จผํธ๋ ์ฌ๋ฌ ํ ์ด๋ธ์คํ์ด์ค์ ๊ฑธ์ณ ์ ์ฅ๋ ์ ์๋ค.
- ์ธ๊ทธ๋จผํธ์ ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋ฉด ํ
์ด๋ธ์คํ์ด์ค์์ ์๋ก์ด Extent๋ฅผ ์ถ๊ฐ ํ ๋น๋ฐ์ ์ ์๋ค.
- ์ด๋, ์๋ก์ด ์ต์คํ ํธ๋ ๊ธฐ์กด๊ณผ ๋์ผํ ๋ฐ์ดํฐ ํ์ผ์ด ์๋ ์๋ ์๋ค.
- ์ต์คํ ํธ๊ฐ ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์ผ์ ํฉ์ด์ง๋ฉด ๋์คํฌ ๊ฒฝํฉ์ด ์ค์ด๋ค๊ณ I/O๊ฐ ๋ถ์ฐ๋๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
- ์ค๋ธ์ ํธ์ ์ธ๊ทธ๋จผํธ๋
1:1 ๊ด๊ณ
ํํฐ์
๊ณผ๋1:M ๊ด๊ณ
- ํํฐ์ ํ ์ด๋ธ(๋๋ ์ธ๋ฑ์ค)์ ์์ฑํ๋ฉด, ๊ฐ ํํฐ์ ๋ณ๋ก ๋ณ๋์ ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋๋ค.
LOB ์ปฌ๋ผ
(Large Object, CLOB, BLOB ๋ฑ)์ ๋ณ๋์ ์ธ๊ทธ๋จผํธ๋ก ์ ์ฅ๋๋ฉฐ, ํด๋น ํ ์ด๋ธ๊ณผ ๋ค๋ฅธ ํ ์ด๋ธ์คํ์ด์ค์ ์ ์ฅ๋ ์๋ ์๋ค.
โข Extent : ๊ณต๊ฐ์ ํ์ฅํ๋ ๋จ์
- ์ฌ๋ฌ ๊ฐ์ Block์ผ๋ก ๊ตฌ์ฑ๋ ์ฐ์๋ ๊ณต๊ฐ์ด๋ค.
- ์ต์คํ ํธ ๋ด ๋ธ๋ก๋ค์ ์ฐ์์ ์ด์ง๋ง, ์ต์คํ ํธ๋ผ๋ฆฌ๋ ๋ฐ๋์ ์ฐ์๋ ๊ณต๊ฐ์ด ์๋๋ค.
- ํ๋์ ์ต์คํ
ํธ๋ ํ๋์ ์ค๋ธ์ ํธ๊ฐ ๋
์ ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
- ์ฆ, ํ ์ต์คํ ํธ์ ์ํ ๋ชจ๋ ๋ธ๋ก์ ๋์ผํ ์ค๋ธ์ ํธ์ ๋ฐ์ดํฐ๋ง ์ ์ฅ ๊ฐ๋ฅํ๋ค.
- Oracle๊ณผ ๋ฌ๋ฆฌ SQL Server์ ๊ฒฝ์ฐ, 2๊ฐ ์ด์์ ์ค๋ธ์ ํธ๊ฐ ๋๋์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ํ
์ด๋ธ์คํ์ด์ค๋ก๋ถํฐ ์ถ๊ฐ ์ต์คํ
ํธ๋ฅผ ํ ๋น๋ฐ์ ์ ์๋ค.
- ์ถ๊ฐ๋๋ ์ต์คํ ํธ๋ ๊ธฐ์กด ์ต์คํ ํธ์ ์ฐ์๋์ง ์์ ์ ์๋ค.
- DBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ฐ์ฅ ์์ ๋จ์์ด๋ค.
- I/O ๋จ์๋ก ์ฌ์ฉ๋๋ฉฐ, ํ ๋ธ๋ก์ ํ๋์ ์ค๋ธ์ ํธ๋ง ๋ ์ ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๋ธ๋ก ๋จ์ I/O
- ํ๋์ ๋ ์ฝ๋๋ฅผ ์ฝ๋๋ผ๋ ํด๋น ๋ ์ฝ๋๊ฐ ์ํ ์ ์ฒด ๋ธ๋ก์ ์ฝ์ด์ผ ํ๋ค.
- ๋ฐ๋ผ์ ์ฑ๋ฅ ์ต์ ํ์ ํต์ฌ์ ๋ถํ์ํ ๋ธ๋ก ์ ๊ทผ์ ์ต์ํํ๋ ๊ฒ์ด๋ค.
- ์ตํฐ๋ง์ด์ (Optimizer)์ ํ๋จ์์ ๋ธ๋ก ์ก์ธ์ค ๊ฐ์๊ฐ ๊ฐ์ฅ ์ค์ํ ์์์ด๋ค.
๋ธ๋ก ์ฃผ์๊ฐ (DBA: Data Block Address)
: ๋ฐ์ดํฐ ๋ธ๋ก์ ๋ช ๋ฒ์งธ ๋ฐ์ดํฐ ํ์ผ์ ๋ช ๋ฒ์งธ ๋ธ๋ก์ธ์ง ๋ํ๋ด๋ ๊ณ ์ ํ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ค.- DBMS๋ณ ๋ธ๋ก ํฌ๊ธฐ
- Oracle: 2KB, 4KB, 8KB, 16KB, 32KB ๋ฑ ๋ค์ํ ๋ธ๋ก ํฌ๊ธฐ ์ฌ์ฉ ๊ฐ๋ฅ
- SQL Server: 8KB ๋ธ๋ก(ํ์ด์ง) ํฌ๊ธฐ ์ฌ์ฉ → ์ต์คํ ํธ(Extent)๋ ํญ์ 64KB(8๊ฐ ๋ธ๋ก)
2. ์์ ๋ฐ์ดํฐ ํ์ผ
- ๊ธฐ๋ฅ : ๋๋์ ์ ๋ ฌ ๋๋ ํด์ ์์ ์ ์ํํ๋ ๋์, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ์ค๊ฐ ๊ฒฐ๊ณผ ์งํฉ์ ์ ์ฅํ๋ ์ญํ ์ ํ๋ค.
- ํน์ง
- ์์ ์ ์ฅ ํ, ์๋ ์ญ์ ์ฒ๋ฆฌ
- Redo ์ ๋ณด๋ฅผ ์์ฑํ์ง ์์ผ๋ฏ๋ก, ๋ฌธ์ ๋ฐ์ ์ ๋ณต๊ตฌ๋์ง ์์ผ๋ฉฐ ๋ฐฑ์ ์ด ํ์ํ์ง ์๋๋ค.
- DBMS ๋ณ ํน์ง
- Oracle : ์์ ํ ์ด๋ธ์คํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๋ง๋ค ๋ณ๋๋ก ์ง์ ๊ฐ๋ฅ
- SQL Server : ๋จ ํ๋์
tempdb
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉฐ,tempdb
๋ ์ ์ญ ๋ฆฌ์์ค๋ก ๋ชจ๋ ์ฌ์ฉ์์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
3. ๋ก๊ทธ ํ์ผ
Data file๊ณผ Control ํ์ผ์ ๊ฐํด์ง๋ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ Redo ๋ก๊ทธ ์ํธ๋ฆฌ๋ก ์ ์ฅ๋๋ฉฐ, ์ด๋ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก๋๋ค.
(1) ๋ก๊ทธ ํ์ผ ๊ตฌ์กฐ
Redo ๋ก๊ทธ ํ์ผ์ Online Redo ๋ก๊ทธ์ Archived(=Offline) Redo ๋ก๊ทธ๋ก ๊ตฌ์ฑ๋๋ค.
โ Online Redo ๋ก๊ทธ
Online Redo ๋ก๊ทธ๋ Redo ๋ก๊ทธ ๋ฒํผ์ ๋ฒํผ๋ง ๋ ๋ก๊ทธ ์ํธ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ ํ์ผ์ด๋ค. ๋ง์ง๋ง ์ฒดํฌ ํฌ์ธํธ ์ดํ๋ถํฐ ์ฅ์ ๋ฐ์ ์ง์ ๊น์ง ์ํ๋ ํธ๋์ญ์ ๋ค์ ์ฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์บ์์ ์ ์ฅ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ง ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋ก๋์ง ์์ ์ํ์์ ์ ์ ๋ฑ์ผ๋ก ์ธ์คํด์ค๊ฐ ๋น์ ์ ์ข ๋ฃ๋๋ฉด, ์์ ๋ด์ฉ์ ์๊ฒ ๋๋ค. ์ด๋ฌํ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด Online Redo ๋ก๊ทธ๊ฐ ์ฌ์ฉ๋๋ค.
- ์ต์ 2๊ฐ ์ด์์ ํ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ํ์ฌ ์ฌ์ฉ ์ค์ธ Redo ๋ก๊ทธ ํ์ผ์ด ๊ฐ๋ ์ฐจ๋ฉด ๋ค์ ํ์ผ๋ก ์๋ ์ ํํ๋ ๋ก๊ทธ ์ค์์นญ(Log Switching)์ด ๋ฐ์ํ๋ค.
- ๋ชจ๋ Redo ๋ก๊ทธ ํ์ผ์ด ๊ฐ๋ ์ฐจ๋ฉด ๋ผ์ด๋ ๋ก๋น(Round-Robin) ๋ฐฉ์์ผ๋ก ์ฒซ ๋ฒ์งธ ํ์ผ๋ถํฐ ๋ค์ ๋ฎ์ด์ด๋ค. Archived(=Offline) Redo ๋ก๊ทธ๋ Online Redo ๋ก๊ทธ๊ฐ ๋ฎ์ด์ฐ์ด๊ธฐ ์ ์ ๋ฐฑ์ ๋ ํ์ผ์ด๋ค. ๋์คํฌ ์์ ๋ฑ ๋ฌผ๋ฆฌ์ ์ฅ์ (๋ฏธ๋์ด ์ฅ์ ) ๋ฐ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ์ ์ฌ์ฉ๋๋ค.
- โก Archived(=Offline) Redo ๋ก๊ทธ
โ SQL Server
SQL Server์ ํธ๋์ญ์ ๋ก๊ทธ ํ์ผ(Transaction Log File)์ Oracle์ Online Redo ๋ก๊ทธ์ ์ ์ฌํ ์ญํ ์ ํ๋ค.
- ์ฃผ ๋ฐ์ดํฐ ํ์ผ๋น ํ๋์ ํธ๋์ญ์ ๋ก๊ทธ ํ์ผ์ด ์์ฑ๋๋ค.
- ํ์ฅ์ :
.ldf
- ๋ด๋ถ์ ์ผ๋ก ๊ฐ์๋ก๊ทธ ํ์ผ์ด๋ผ๋ ๋ ์์ ๋จ์์ ์ธ๊ทธ๋จผํธ๋ก ๋ถํ ๋๋ค.
- ์กฐ๊ฐํ ๋ฐฉ์ง๋ฅผ ์ํด ๋ก๊ทธ ํ์ผ ํฌ๊ธฐ๋ฅผ ๋๋ํ๊ฒ ์ค์ ํ๊ฑฐ๋ ์ฆ๊ฐ ๋จ์๋ฅผ ํฌ๊ฒ ์ง์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
- ์กฐ๊ฐํ ๋ฐฉ์ง๋ฅผ ์ํด ๋ก๊ทธ ํ์ผ ํฌ๊ธฐ๋ฅผ ๋๋ํ๊ฒ ์ค์ ํ๊ฑฐ๋ ์ฆ๊ฐ ๋จ์๋ฅผ ํฌ๊ฒ ์ง์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
(2) ๋ก๊ทธ ํ์ผ์ ์ญํ
โ Database(=Media) Recovery
Redo ๋ก๊ทธ ํ์ผ์ ๋์คํฌ ์ฅ์ (Media Failure) ๋ฐ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ์ ์ฌ์ฉ๋๋ค. ์ด๋, Archived Redo ๋ก๊ทธ ํ์ผ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ๋ณต๊ตฌ๋ฅผ ์ํํ๋ค.
โก Cache(=Instance) Recovery (instance Recovery ์ roll forward ๋จ๊ณ)
๋๋ถ๋ถ์ DBMS๋ I/O ์ฑ๋ฅ์ ํฅ์ํ๊ธฐ ์ํด ๋ฒํผ ์บ์(Buffer Cache)๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋ ๋ฒํผ ์บ์๋ ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ ์ด๋ฏ๋ก, ๋ฐ์ดํฐ ํ์ผ์ ๋ฐ์๋์ง ์์ ์ํ์์ ์ ์ ๋ฑ ์ธ์คํด์ค๊ฐ ๋น์ ์ ์ข ๋ฃ ๋๋ฉด ์์ ๋ด์ฉ์ด ์ ์ค๋๋ค. ์ด๋ฌํ ํธ๋์ญ์ ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด Redo ๋ก๊ทธ ํ์ผ์ ์ฌ์ฉํ์ฌ ์์คํ ์ข ๋ฃ ์ด์ ์ํ๋ก ๋ณต๊ตฌ(Instance Recovery)ํ๋ค.
โข Fast Commit
๋ฐ์ดํฐ ๋ณ๊ฒฝ์ฌํญ์ ๋์คํฌ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ฆ์ ๊ธฐ๋กํ๋ ์์
์ Random ์ก์ธ์ค
๋ฐฉ์์ด๋ฏ๋ก ์๋๊ฐ ๋๋ฆฌ๋ค. ๋ฐ๋ฉด, ๋ก๊ทธ ๊ธฐ๋ก์ Append ๋ฐฉ์
์ด๋ฃจ์ด์ง๋ฏ๋ก ์๋์ ์ผ๋ก ๋น ๋ฅด๋ค.
โAppend ๋ฐฉ์
์ค๊ฐ์ ๋ฒํผ ์บ์(Buffer Cache)๋ฅผ ๊ฒฝ์ ํ์ง ์๊ณ ๋ฐ๋ก ๋ฐ์ดํฐ ๋ธ๋ก์ ์ก์ธ์คํ ์ ์์ด ์ ์ฌ ์๊ฐ์ด ๋จ์ถ๋๋ค.
๋ฐ๋ผ์, ํธ๋์ญ์
๋ฐ์ ์ ๋งค๋ฒ ๋ฐ์ดํฐ ํ์ผ์ ์ง์ ๊ธฐ๋กํ๋ ๋์ , ๋ณ๊ฒฝ ์ฌํญ์ Append ๋ฐฉ์์ผ๋ก ๋น ๋ฅด๊ฒ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ๋ค. ์ดํ, ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๋ธ๋ก๊ณผ ๋ฐ์ดํฐ ํ์ผ ๊ฐ ๋๊ธฐํ๋ ์ ์ ํ ์๋จ(์: DBWR
, Checkpoint
)์ ์ด์ฉํด Batch ๋ฐฉ์์ผ๋ก ์ผ๊ด ์ํํ๋ค.
์ฆ, ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฉ๋ชจ๋ฆฌ์์ ๋ฒํผ ๋ธ๋ก์๋ง ๊ธฐ๋ก๋ ์ํ์์ ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์๋๋ผ๋, Redo ๋ก๊ทธ ํ์ผ์ ๋ฏฟ๊ณ ๋น ๋ฅด๊ฒ Commit์ ์ํํ ์ ์๋ค. ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ Fast Commit
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ด๋ฌํ ๊ธฐ๋ฅ์ Oracle๋ฟ๋ง ์๋๋ผ ๋น ๋ฅธ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋๋ถ๋ถ์ DBMS์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
(3) Fast Commit
โ๏ธ Fast Commit ๋ฉ์ปค๋์ฆ
- ์ฌ์ฉ์๊ฐ Commit์ ์คํํ๋ค.
- ์๋ฒ ํ๋ก์ธ์ค๋ Commit ๋ ์ฝ๋๋ฅผ Redo ๋ก๊ทธ ๋ฒํผ์ ๊ธฐ๋กํ๋ค.
- LGWR ํ๋ก์ธ์ค๋ ์ด๋ฅผ ์ฆ์ ํธ๋์ญ์ ๋ก๊ทธ ์ํธ๋ฆฌ์ ํจ๊ป Redo ๋ก๊ทธ ํ์ผ์ ์ ์ฅํ๋ค.
- Commit์ ์ํํ ์๋ฒ ํ๋ก์ธ์ค์ ์ฑ๊ณต ์๋ต์ ๋ฐํํ๋ค.
์ฌ๊ธฐ๊น์ง ์๋ฃ๋๋ฉด ์์ง ์ฌ์ฉ์์ ๊ฐฑ์ ๋ด์ฉ์ด ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์์ง๋ง Instance Crash ๊ฐ ๋ฐ์ํ๋๋ผ๋ Redo ๋ก๊ทธ๋ฅผ ์ด์ฉํด ์ธ์ ๋ ๋ณต๊ตฌ๊ฐ๋ฅํ ์ํ๊ฐ ๋์์ผ๋ฏ๋ก ์ค๋ผํด์ ์์ฌํ๊ณ ์ปค๋ฐ์ ์๋ฃํ ์ ์๋ ๊ฒ์ด๋ค. ์ฆ, Fast Commit์ ํต์ฌ์ 3๋ฒ์ด๋ผ ํ ์ ์๋ค.
โ Log Force at Commit
Redo ๋ก๊ทธ ๋ฒํผ๋ ์ผ์ ์ฃผ๊ธฐ๋ก ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก๋์ง๋ง, ์ต์ํ ์ปค๋ฐ ์์ ์๋ ๋ฐ๋์ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก๋์ด์ผ ํ๋ค. ์ด๋ฅผ Log Force at Commit
์ด๋ผ๊ณ ํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ก๊ทธ๋ฒํผ๋ ์ ์ค๋ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๊ณผ์ ์ ํธ๋์ญ์
์ ์์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํ์ ์ ์ธ ๊ณผ์ ์ด๋ค.
โก Write Ahead Logging
๋ฒํผ ์บ์ ๋ธ๋ก์ ๊ฐฑ์ ํ๊ธฐ ์ ์ ๋ฐ๋์ Redo ๋ก๊ทธ ๋ฒํผ์ ๋จผ์ ๊ธฐ๋ก๋ผ์ผ ํ๋ฉฐ, DBWR๊ฐ Dirty ๋ฒํผ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๊ธฐ ์ ์ LGWR๊ฐ ํด๋น Redo ์ํธ๋ฆฌ๋ฅผ ๋จผ์ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ์์ ๋ณด์ฅ๋์ด์ผ ํ๋ค.. ์ด๋ฅผ Write Ahead Logging
์ด๋ผ๊ณ ํ๋ค.
์ธ์คํด์ค ์ฅ์ ๊ฐ ๋ฐ์ ์, ๋ก๊ทธ ํ์ผ์ ์ด์ฉํด ๋ฐ์ดํฐ ๋ณต๊ตฌ๋ฅผ ์ํํ๊ณ ์ต์ข ์ ์ผ๋ก ์ปค๋ฐ๋์ง ์์ ํธ๋์ญ์ ์ ๋กค๋ฐฑ ์ฒ๋ฆฌ ํด์ผ ํ๋ค. ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก๋์ง ์์ ๋ณ๊ฒฝ ๋ด์ญ์ด ์ด๋ฏธ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ์ปค๋ฐํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Redo ๋ก๊ทธ ํ์ผ์๋ ๋ฐ๋์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ด์ญ์ด ์ ๊ธฐ๋ก ๋์ด์ผ ํ๋ค.
๐๏ธ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
Oracle์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ SGA(System Global Area)์ PGA(Process Global Area)๋ก ๊ตฌ๋ถ๋๋ค.
System Global Area(SGA) : ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ก์ธ์ค ํ ์ ์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
- SGA๋ฅผ ๊ตฌ์ฑํ๋ ์ฃผ์ ์บ์ ์์ญ
- DB ๋ฒํผ ์บ์ (DB Buffer Cache): ๋์คํฌ I/O ์ต์ํ๋ฅผ ์ํด ๋ฐ์ดํฐ ๋ธ๋ก์ ์บ์ฑ
- ๊ณต์ ํ (Shared Pool): SQL ์คํ ๊ณํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์, ๋์ ๋๋ฆฌ ์บ์ ์ ์ฅ
- ๋ก๊ทธ ๋ฒํผ (Redo Log Buffer): Redo ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ๋น ๋ฅธ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ง์
- ์ถ๊ฐ์ ์ผ๋ก Large Pool, Java Pool ๋ฑ๋ ํฌํจ๋๋ฉฐ, ์์คํ ๊ตฌ์กฐ์ ์ ์ด ์ ๋ณด๋ฅผ ์บ์ฑํ๋ ์์ญ์ด ์กด์ฌํ๋ค.
- ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๊ณต์ ๋๋ฏ๋ก ๋ด๋ถ์ ์ผ๋ก ๋์ ์ก์ธ์ค๋ฅผ ์ ์ดํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค.
๋์น(Latch)
,๋ฒํผ Lock
,๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ Lock/Pin
๋ฑ์ ์ฌ์ฉํ์ฌ ์ก์ธ์ค ์ง๋ ฌํ ํ๋ค.
- SQL Server์์๋ Memory Pool์ด SGA์ ์ญํ ์ ๋ด๋นํ๋ค.
Process Global Area(PGA) : ๊ฐ๋ณ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง๋ ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ณ (Sort Area), ์ธ์ ๊ณผ ์ปค์์ ๋ํ ์ํ ์ ๋ณด ์ ์ฅํ๋ค.
- SGA์ ๋ค๋ฅด๊ฒ ๋์น ๋ฉ์ปค๋์ฆ์ด ํ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด SGA๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
- SQL Server์ ์ค๋ ๋ ๊ธฐ๋ฐ ์ํคํ
์ฒ์ด๋ฏ๋ก, PGA์ ๊ฐ์ง ์๋๋ค.
- ์ค๋ ๋๋ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง์ง ์๊ณ , ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ๋ค.
1. DB ๋ฒํผ ์บ์ (DB Buffer Cache)
Oracle์ SGA ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ์ถ๋ ฅ์ ์ํํ๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ์ฝ๋ ๊ณผ์ ์์ ๊ฑฐ์น๋ ์บ์ ์์ญ์ DB ๋ฒํผ ์บ์๋ผ๊ณ ํ๋ค.
(1) ๋ธ๋ก ๋จ์ I/O
DB ๋ฒํผ ์บ์๋ ๋ธ๋ก ๋จ์๋ก I/O๋ฅผ ์ํํ๋ค. ์ฆ, ํ๋์ ๋ ์ฝ๋์์ ๋จ ํ๋์ ์ปฌ๋ผ์ ์ฝ๊ณ ์ ํ๋๋ผ๋, ํด๋น ๋ ์ฝ๋๊ฐ ์ํ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ฝ์ด์ผ ํ๋ค.
- ๋ชจ๋ ๋ธ๋ก I/O ์์
์
Direct Path Read ๋ฉ์ปค๋์ฆ
์ ์ ์ธ, ๋ฐ๋์ DB ๋ฒํผ ์บ์๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค. - ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
๋ ๋ฒํผ ์บ์์ ์ ์ฌ๋ ๋ธ๋ก์ ํตํด ์ํ๋๋ฉฐ, ๋ณ๊ฒฝ๋ ๋ธ๋ก(Dirty ๋ฒํผ ๋ธ๋ก)์
DBWR ํ๋ก์ธ์ค
๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋กํ๋ค.(2) ๋ฒํผ ์บ์ ๊ตฌ์กฐ
DB ๋ฒํผ ์บ์๋ ํด์ ํ ์ด๋ธ(Hash Table) ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ๋๋ค. ๋ฐ์ดํฐ ๋ธ๋ก์ ํด์ฑํ๊ธฐ ์ํ ํค ๊ฐ์ผ๋ก DBA(Data Block Address, ๋ฐ์ดํฐ ๋ธ๋ก ์ฃผ์)๋ฅผ ์ฌ์ฉํ๋ค.
โ ๋ฒํผ ๋ธ๋ก ๊ฒ์ ๊ณผ์
- ๋ฒํผ ์บ์์์ ๋จผ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ฒ์ํ๋ค.
- ๊ฒ์ํ ๋ธ๋ก ์ฃผ์๋ฅผ ํด์ ๊ฐ์ผ๋ก ๋ณํํ ํ, ํด๋น ํด์ ๋ฒํท(Hash Bucket)์์ ์ฒด์ธ์ ๋ฐ๋ผ ์ค์บํ๋ค.
- ๋ฒํผ ์บ์์ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์กด์ฌํ๋ฉด ์ฆ์ ๋ฐํ, ์์ ๊ฒฝ์ฐ ๋์คํฌ์์ ๋ก๋ํ๋ค.
- ์ด๋, ๋์คํฌ์์ ๋ธ๋ก์ ์ฝ์ด์ ๋ฒํผ ์บ์์ ์ ์ฌํ์ฌ ํด์์ฒด์ธ์ ์ฐ๊ฒฐํ ํ ์ฝ๋๋ค.
โก ํด์ ์ฒด์ธ (Hash Chain) ๊ตฌ์กฐ
- Hash bucket → Hash Chain → Hash Header
- DBA(๋ฐ์ดํฐ ๋ธ๋ก ์ฃผ์)๋ฅผ ํด์ ํจ์์ ์
๋ ฅํ์ฌ ํด์ ๊ฐ ์์ฑํ์ฌ ๊ฐ์ ๊ฐ์ ๊ฐ์ง ๋ธ๋ก๋ค์
ํด์ ๋ฒํท(Hash Bucket)
์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ ์ฅํ๋ค. - ๊ฐ๊ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ
ํด์ ์ฒด์ธ(Hash Chain)
์ด๋ผ๊ณ ํ๋ค. ๋ฒํผ ํค๋(Buffer Header)
๋ ๋ฒํผ์ ๋ํ ๋ฉํ ์ ๋ณด, ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ค์ ๋ฒํผ์ ๋ํ ํฌ์ธํฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.- ๋ฒํผ ๋ธ๋ก ์์ฒด๊ฐ ํด์ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋๋ ๊ฒ์ด ์๋๋ผ,
๋ฒํผ ํค๋(Buffer Header)
๊ฐ ํด์ ์ฒด์ธ์ ์ฐ๊ฒฐ๋๋ค. - ์ค์ ๋ฐ์ดํฐ๋ ๋ฒํผ ํค๋์ ํฌ์ธํฐ๋ฅผ ํตํด ๋ฒํผ ๋ธ๋ก์์ ์กฐํํ๋ค.
- ๋ฒํผ ๋ธ๋ก ์์ฒด๊ฐ ํด์ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋๋ ๊ฒ์ด ์๋๋ผ,
โข ์บ์ ๋ฒํผ ์ฒด์ธ
๊ฐ DB ๋ฒํผ๋ DBA๊ฐ ํด์ ํจ์์ ์ํด ํด์๋์ด Hash Tabel์ ํ ๋น๋์ด ๊ด๋ฆฌ๋๋ ๋ฐ, ์ด๋ฅผ Cache Buffer Chain List๋ผ ํ๋ค.
- ์บ์ ๋ฒํผ ์ฒด์ธ List๋ ์๋ฐฉํฅ์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก, ์ธ์คํด์ค๊ฐ ์์๋ ๋ ํ ๋น๋๋ Hash Table๋ก ๊ตฌ์ฑ๋๋ค.
- Hash Table ์์ Bucket์ ๊ฐ DB ๋ฒํผ๋ค์ Header ์ ๋ณด๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด ๊ฐ Buffer๋ค์ LRU List ๋ Dirty List์ ํ ๊ฐ์ง์ ์ํ๋ค.
โฃ์บ์ ๋ฒํผ LRU ์ฒด์ธ
๋ฒํผ ํค๋๋ ํด์ ์ฒด์ธ๋ฟ ์๋๋ผ LRU ์ฒด์ธ์ ์ํด์๋ ์ฐ๊ฒฐ๋์ด ์๋ค. DB ๋ฒํผ ์บ์๋ ์ ํํ ์์์ด๋ฏ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ ์ ์๋ค. ๋ฐ๋ผ์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ์งํ๊ณ , ์ฌ์ฉ ๋น๋๊ฐ ๋ฎ์ ๋ธ๋ก์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋๋ค. ์ด๋ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด LRU(Least Recently Used)์๊ณ ๋ฆฌ์ฆ
์ด๋ค.
ใ ํน์ง ใ
- ๋ชจ๋ ๋ฒํผ ๋ธ๋ก์ ํค๋๋ฅผ LRU ์ฒด์ธ์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ ๋น๋์์ผ๋ก ์ ๋ ฌํ๋ค.
- Free ๋ฒํผ๊ฐ ํ์ํ ๊ฒฝ์ฐ, ๊ฐ์ฅ ์ฌ์ฉ ๋น๋๊ฐ ๋ฎ์ ๋ธ๋ก๋ถํฐ ์ ๊ฑฐํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๋ค.
- ๋ชจ๋ ๋ฒํผ ๋ธ๋ก์ Dirty ํน์ LRU ๋ฆฌ์คํธ ์ค ํ๋์ ๋ฐ๋์ ์ํ๋ค.
- ์ฝ๊ธฐ(Read) ๋๋ ์ฐ๊ธฐ(Write) ์์ ์ ์ํด ์ก์ธ์ค ํ๋ ๋์์๋ ๋ฆฌ์คํธ์์ ์ผ์์ ์ผ๋ก ์ ์ธ๋๋ค.
- ์์ ์๋ฃ ํ, ๋ค์ ์๋์ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ๋๊ฑฐ๋, ์ต์ด ๋ณ๊ฒฝ์ด ๋ฐ์ํ์์ ๋๋ Dirty ๋ฆฌ์คํธ๋ก ์ฎ๊ฒจ๊ฐ๋ค.
ใ ๊ตฌ์ฑ ใ
- Dirty ๋ฆฌ์คํธ (LRUW List / LRU Write List)
- ๋ณ๊ฒฝ๋์์ง๋ง ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์ Dirty ๋ฒํผ ๋ธ๋ก์ ๊ด๋ฆฌํ๋ค.
DBWR
ํ๋ก์ธ์ค๊ฐ Dirty ๋ฆฌ์คํธ์ ๋ธ๋ก์ ๋์คํฌ์ ๊ธฐ๋ก ํ Free ๋ฒํผ๋ก ๋ณํํ๋ค. ์ด๋, LRU List์ ๋๋ถ๋ถ์ ์์นํ๊ฒ ๋๋ค.
- LRU ๋ฆฌ์คํธ
- ์์ง Dirty ๋ฆฌ์คํธ๋ก ์ฎ๊ฒจ์ง์ง ์์ ๋๋จธ์ง ๋ฒํผ ๋ธ๋ก์ ๊ด๋ฆฌํ๋ค.
- LRU ์๊ณ ๋ฆฌ์ฆ์ ์ํด ์ฌ์ฉ ๋น๋๊ฐ ๋์ ๋ธ๋ก์ ์ ์ง๋๊ณ , ๋ฎ์ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ์์ ์์ด์ง๋๋ก ๊ด๋ฆฌํ๋ค.
ใ ๋ฒํผ ์ํ ใ
- Free ๋ฒํผ (Clean Buffer)
- ๋น์ด ์๋(Unused) ์ํ ๋๋ ๋ฐ์ดํฐ ํ์ผ๊ณผ ๋๊ธฐํ๋ ์ํ
- ์ธ์ ๋ ์ง ๋ฎ์ด ์จ๋ ๋ฌด๋ฐฉํ ๊นจ๋ํ(Clean) ๋ฒํผ ๋ธ๋ก
- ์๋ก์ด ๋ฐ์ดํฐ ๋ธ๋ก์ ๋ก๋ฉํ๋ ค๋ฉด ๋จผ์ Free ๋ฒํผ๋ฅผ ํ๋ณดํด์ผ ํ๋ค.
- Free ์ํ์ ๋ฒํผ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ, Dirty ๋ฒํผ๋ก ์ ํํ๋ค.
- Dirty ๋ฒํผ (Dirty Buffer)
- ๋ฒํผ์ ์บ์ ๋ ์ดํ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ง๋ง ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์ ์ํ
- ๋์คํฌ์ ๋ฐ์ดํฐ ํ์ผ๊ณผ ๋๊ธฐํ(Synchronization)๊ฐ ํ์ํ ๋ฒํผ ๋ธ๋ก
- Dirty ๋ฒํผ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ํด ์ฌ์ฌ์ฉ๋๋ ค๋ฉด ๋จผ์ ๋์คํฌ์ ๊ธฐ๋ก๋ผ์ผ ํ๋ค.
- ๋์คํฌ์ ๊ธฐ๋ก๋๋ ์๊ฐ, ๋ค์ Free ๋ฒํผ๋ก ์ ํ๋๋ค.
- ๋ฒํผ์ ์บ์ ๋ ์ดํ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ง๋ง ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์ ์ํ
- Pinned ๋ฒํผ (Pinned Buffer)
- ํ์ฌ ์ฝ๊ธฐ(Read) ๋๋ ์ฐ๊ธฐ(Write) ์์ ์ด ํ์ฌ ์งํ ์ค์ธ ๋ฒํผ ๋ธ๋ก
- ํน์ ํ๋ก์ธ์ค๊ฐ ์์ ์ ์๋ฃํ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ํด๋น ๋ฒํผ์ ์ ๊ทผ ๋ถ๊ฐ
(3) ๋์ ์ก์ธ์ค ๊ด๋ฆฌ
Oracle์ SGA(System Global Area)๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ฏ๋ก, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฒํผ ๋ธ๋ก์ ์ก์ธ์ค ํ ์ ์๋ค. ํ์ง๋ง ๋์ ์ ๊ทผ์ผ๋ก ์ธํ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ก์ธ์ค ์ง๋ ฌํ๊ฐ ํ์ํ๋ฉฐ, ์ด๋ฅผ ์ํด ๋์น(Latch)
์ ๋ฒํผ Lock
์ด ์ฌ์ฉ๋๋ค.
โ Latch
๋์น๋ ํน์ ๋ฆฌ์์ค๋ฅผ ๋ณดํธํ๋ ์ ๊ธ(Locking) ๋ฉ์ปค๋์ฆ์ผ๋ก, ๋์น๋ฅผ ํ๋ํ ํ๋ก์ธ์ค๋ง์ด ํด๋น ์๋ฃ๊ตฌ์กฐ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ์ด๋ฅผ ํตํด ๋์ ์ ๊ทผ์ ์ง๋ ฌํํ์ฌ ๋ฐ์ดํฐ ์ถฉ๋์ ๋ฐฉ์งํ๋ค.
- cache buffers chains Latch
- ํด์ ์ฒด์ธ์ ๋ณดํธํ์ฌ ๋ฐ์ดํฐ ์ถฉ๋์ ๋ฐฉ์งํ๋ค.
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ํด์ ์ฒด์ธ์ ์ ๊ทผํ๋ ๊ฒ์ ์ง๋ ฌํ(Serialization) ์ฒ๋ฆฌํ๋ค.
- ๋์น๋ฅผ ํ๋ํ๋ ๊ณผ์ ์์ ๊ฒฝํฉ์ด ๋ฐ์ํ๋ฉด latch: cache buffers chains ์ด๋ฒคํธ๋ฅผ ๋๊ธฐํ๊ฒ ๋๋ค.
- cache buffers chains lru Latch : LRU ๋ฆฌ์คํธ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
โก ๋ฒํผ Lock
๋ฒํผ Lock์ ๊ฐ๋ณ ๋ฒํผ ๋ธ๋ก์ ๋ณดํธํ๊ธฐ ์ํ ์ ๊ธ ๋ฉ์ปค๋์ฆ์ผ๋ก, ์ฝ๊ธฐ(Read) ๋๋ ๋ณ๊ฒฝ(Write) ์์
์ ์ํํ๋ ํ๋ก์ธ์ค๋ ๋ฐ๋์ ๋ฒํผ Lock์ ํ๋ํด์ผ ํ๋ค. ๋ฒํผ Lock์ ํ๋ํ ํ, ์ฆ์ Latch ํด์ ์ฒ๋ฆฌํ์ฌ Latch๋ฅผ ์ค๋ ์ ์งํ์ง ์๋๋ก ํ๋ค.
ใ Lock ๋ชจ๋ ใ
- Share ๋ชจ๋ (Shared Lock) → ์ฝ๊ธฐ(Read) ์์ ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๊ฐ๋ฅ
- Exclusive ๋ชจ๋ (Exclusive Lock) → ๋ณ๊ฒฝ(Write) ์์
์ ํ ํ๋ก์ธ์ค๋ง ํ๋ ๊ฐ๋ฅ
- Exclusive Lock์ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ํ๋ ๊ฐ๋ฅํ๋ค. (์ก์ธ์ค ์ง๋ ฌํ ์ฒ๋ฆฌ)
ใ ๋๊ธฐ ์ด๋ฒคํธ ใ
ํ๋ก์ธ์ค๊ฐ cache buffers chains Latch
๋ฅผ ํ๋ํ ํ, ์ํ๋ ๋ฒํผ ๋ธ๋ก์ด ์ด๋ฏธ Exclusive Lock ์ํ๋ผ๋ฉด?
- ๋์น๋ฅผ ๊ณ์ ์ ์งํ๋ฉด ์ ๋๋ฏ๋ก, ๋ฒํผ Lock ๋๊ธฐ์ ๋ชฉ๋ก(Waiter List)์ ๋ฑ๋กํ๊ณ ๋์น๋ฅผ ํด์ ํ๋ค.
- ๋ฒํผ Lock์ด ํด์ ๋๋ฉด ๋๊ธฐ ์ค์ด๋ ํ๋ก์ธ์ค๊ฐ Lock์ ํ๋ํ๊ณ ์์ ์ํํ๋ค.
์ด ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋๊ธฐ ์ด๋ฒคํธ๊ฐ "buffer busy waits" ์ด๋ฒคํธ์ด๋ค.
2. ๊ณต์ ํ (Shared Pool)
๊ณต์ ํ(Shared Pool)์ ๋์ ๋๋ฆฌ ์บ์(Dictionary Cache)์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์(Library Cache)๋ก ๊ตฌ์ฑ๋๋ฉฐ, LRU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๋๋ค.
โ SQL Server์์๋ ํ๋ก์์ ์บ์(Procedure Cache)๋ผ๊ณ ํ๋ค.
(1) ๋์ ๋๋ฆฌ ์บ์ (Dictionary Cache)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋์ ๋๋ฆฌ ์ ๋ณด๋ฅผ ์บ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋์ ๋๋ฆฌ : ํ ์ด๋ธ, ์ธ๋ฑ์ค, ํ ์ด๋ธ์คํ์ด์ค, ํ ์ดํฐํ์ผ, ์ธ๊ทธ๋จผํธ, ์ต์คํ ํธ, ์ฌ์ฉ์, ์ ์ฝ, Sequence, DB Link์ ๊ดํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋์๋ค๊ฐ ๋ฒํผ ์บ์๋ฅผ ํตํด ์ฝํ์ง๋ง, ๋ฉํ ์ ๋ณด๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋์ ๋๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, ์ด๋ฅผ ๋์ ๋๋ฆฌ ์บ์๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋ค.
- ๋ธ๋ก ๋จ์๊ฐ ์๋ Row ๋จ์๋ก ์ฝ๊ณ ์ฐ๊ธฐ ๋๋ฌธ์
๋ก์ฐ ์บ์
๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
(2) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ (Library Cache)
- ์ฌ์ฉ์๊ฐ ์ํํ SQL ๋ฌธ, ์คํ ๊ณํ, ์ ์ฅ ํ๋ก์์ ๋ฑ์ ์ ์ฅํ๋ ์บ์ ์์ญ์ด๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์๋ ๊ฐ์ SQL ๋ฌธ์ด ์ฌ๋ฌ ๋ฒ ์คํ๋ ๊ฒฝ์ฐ, ๋ฐ๋ณต์ ์ธ ํ๋ ํ์ฑ์ ์ต์ํํ๊ธฐ ์ํ ์บ์ ๊ณต๊ฐ์ด๋ค.
- ํ๋ ํ์ฑ์ ์์คํ ์ฑ๋ฅ์ ๋ถํ๋ฅผ ์ฃผ๋ ์์ ์ด๋ฏ๋ก, ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ฐ์ธ๋ ๋ณ์ ์ฌ์ฉ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ํจ์จ์ ๊ด๋ฆฌ๊ฐ ์ค์ํ๋ค.
3. Redo ๋ก๊ทธ ๋ฒํผ(Redo Log Buffer)
Redo ๋ก๊ทธ ๋ฒํผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ํ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค. ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ ๋, ์ฆ์ Redo ๋ก๊ทธ ํ์ผ์ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๋จผ์ Redo ๋ก๊ทธ ๋ฒํผ์ ๊ธฐ๋ก๋๋ค.
- ๋ฐ์ดํฐ ๋ธ๋ก ๋ฒํผ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ ์ ํญ์ Redo ๋ก๊ทธ ๋ฒํผ์ ๋จผ์ ๊ธฐ๋กํด์ผ๋ง ํ๋ค.
- ๋ก๊ทธ ์ํธ๋ฆฌ๋ฅผ ํ์ผ์ ๊ณง๋ฐ๋ก ๊ธฐ๋กํ๋ ๊ฒ์ด ์๋๋ผ ๋จผ์ ๋ก๊ทธ ๋ฒํผ์ ๊ธฐ๋กํ๋ ๊ฒ์ ์ผ์ ๋ ๋ชจ์๋ค๊ฐ ๊ธฐ๋กํ๋ ๊ฒ์ด ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ผ์ ์์ ๋ง๋ค
LGWR ํ๋ก์ธ์ค
๊ฐ Redo ๋ก๊ทธ ๋ฒํผ์ ๋ด์ฉ์ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ๋ค. - ์์คํ
์ ๋ชจ๋ํฐ๋งํ๋ฉด, ์ฌ์ฉ์๊ฐ ์ปค๋ฐ ๋๋ ๋กค๋ฐฑํ ๋๋ง๋ค
log file sync ๋๊ธฐ ์ด๋ฒคํธ
๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.- ์ด๋ LGWR ํ๋ก์ธ์ค๊ฐ ๋ก๊ทธ ๋ฒํผ ๋ด์ฉ์ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ ๋๊น์ง ์๋ฒ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐํ๋ ํ์ ๋๋ฌธ์ด๋ค.
โ๏ธ Redo ๋ก๊ทธ ํ์ผ ๊ธฐ๋ก ์์
- 3์ด๋ง๋ค DBWR ํ๋ก์ธ์ค๋ก๋ถํฐ ์ ํธ๋ฅผ ๋ฐ์ ๋
- DBWR์ Dirty ๋ฒํผ๋ฅผ ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋กํ๊ธฐ ์ ์ ๋ก๊ทธ ๋ฒํผ ๋ด์ฉ์ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ๋๋ก LGWR์๊ฒ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
- ๋ก๊ทธ ๋ฒํผ์ 1/3์ด ์ฐจ๊ฑฐ๋ ๊ธฐ๋ก๋ Redo ๋ ์ฝ๋์ ํฌ๊ธฐ๊ฐ 1MB๋ฅผ ์ด๊ณผํ ๋
- ์ฌ์ฉ์๊ฐ ์ปค๋ฐ ๋๋ ๋กค๋ฐฑ ๋ช ๋ น์ ์คํํ ๋
๐ Undo
Undo ์ธ๊ทธ๋จผํธ๋ ์ผ๋ฐ์ ์ธ ํ ์ด๋ธ ์ธ๊ทธ๋จผํธ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋น์ทํ๋ฉฐ,
- ์ต์คํ ํธ ๋จ์๋ก ํ์ฅ๋๋ฉฐ
- ๋น ๋ฅธ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ฅผ ์ํด Undo ๋ธ๋ก์ ๋ฒํผ ์บ์์ ์บ์ฑํ๋ฉฐ
- ๋ฐ์ดํฐ ์ ์ค ๋ฐฉ์ง๋ฅผ ์ํด ๋ณ๊ฒฝ์ฌํญ์ Redo ๋ก๊ทธ์ ๊ธฐ๋กํ๋ค.
๋จ, Undo ์ธ๊ทธ๋จผํธ๋ ์ ์ฅํ๋ ๋ด์ฉ์ด ๋ค๋ฅด๋ค. ๊ฐ ํธ๋์ญ์ ๋ณ๋ก Undo ์ธ๊ทธ๋จผํธ๋ฅผ ํ ๋นํ๋ฉฐ, ํธ๋์ญ์ ์ด ์ํํ ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค์ ๋ณ๊ฒฝ์ฌํญ์ Undo ๋ ์ฝ๋ ๋จ์๋ก ์ ์ฅํ๋ค.
โ Undo ์ฌ์ฉ ๋ชฉ์
- Transaction Rollback : ํธ๋์ญ์ ์ ์ปค๋ฐํ์ง ์๊ณ ๋กค๋ฐฑํ ๊ฒฝ์ฐ, Undo ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฐ๋ค.
- Transaction Recovery - Instance Recovery ์ rollback ๋จ๊ณ
- Instance Crash ํ, Redo๋ฅผ ์ด์ฉํด Roll Forward ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด ์ต์ข ์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ๊น์ง ๋ชจ๋ ๋ณต๊ตฌ๋๋ค. (Redo ๋ก๊ทธ ํ์ผ ๊ธฐ๋ก ์์ ์ ์ฌ์ฉ์๊ฐ ์ปค๋ฐ ๋๋ ๋กค๋ฐฑ ๋ช ๋ น์ ์คํํ ๋ ์ด์ธ ์๊ธฐ ๋๋ฌธ)
- ๊ทธ๋ฌ๋ ์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋กค๋ฐฑํด์ผ ํ๋ฏ๋ก, Undo ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ์๋ ์ํ๋ก ๋๋๋ฆฐ๋ค.
- Read Consistency :
- Undo ๋ฐ์ดํฐ๋ ์ฝ๊ธฐ ์ผ๊ด์ฑ(Read Consistency)์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ๋ค์ค ์ฌ์ฉ์ ํ๊ฒฝ์์ ํ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋์, ๋ค๋ฅธ ์ฌ์ฉ์๋ ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ(Undo ๋ธ๋ก์ ์ ์ฅ๋ ์ด์ ๊ฐ)๋ฅผ ์ฝ์ ์ ์๋๋ก ์ ๊ณตํ๋ค.
- DB2, SQK Server, Sybase๋ Locking ๊ธฐ๋ฒ์ ์ด์ฉํด ์ฝ๊ธฐ ์ผ๊ด์ฑ์ ๊ตฌํํ์ง๋ง, ์ค๋ผํด์ Undo ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ค.
โก vs Redo
- Redo : Redo ๋ก๊ทธ๋ฅผ ์ด์ฉํ์ฌ ์ฅ์ ๋ฐ์ ํ ์ปค๋ฐ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณต๊ตฌํ๋ค.
- Undo : Undo ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ๋กค๋ฐฑ ๋๋ ์ฝ๊ธฐ ์ผ๊ด์ฑ์ ์ํด ๋ณ๊ฒฝ ์ ์ํ๋ก ๋ณต๊ตฌํ๋ค.
Reference
'DB > SQLP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLP] 1-5. I/O ๋ฉ์ปค๋์ฆ (0) | 2025.02.11 |
---|---|
[SQLP] 1-4. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ์ต์ ํ (0) | 2025.02.09 |
[SQLP] 1-3. SQL ๊ณต์ ๋ฐ ์ฌ์ฌ์ฉ (0) | 2025.02.09 |
[SQLP] 1-2. SQL ํ์ฑ๊ณผ ์ต์ ํ (0) | 2025.02.09 |
[SQLP] ๋น์ ๊ณต์ ๊ฐ๋ฐ์, ์ผ๊ทผ ํ๋ฉด์ 6๊ฐ์ ๋ง์ SQLP ํฉ๊ฒฉ ํ๊ธฐ ๋ฐ ๊ณต๋ถ ๋ฐฉ๋ฒ (์ 51ํ ์ํ) ๐ (0) | 2024.10.06 |