๐งท SQL ๊ณต์ ๋ฐ ์ฌ์ฌ์ฉ
๐๏ธ ์ํํธ ํ์ฑ VS ํ๋ ํ์ฑ
SGA(System Global Area)๋ ์๋ฒ ํ๋ก์ธ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ณตํต์ ์ผ๋ก ์ก์ธ์ค ํ๋ ๋ฐ์ดํฐ์ ์ ์ด๊ตฌ์กฐ๋ฅผ ์บ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค. SGA ๊ตฌ์ฑ์์ ์ค์ SQLํ์ฑ, ์ต์ ํ, ๋ก์ฐ ์์ค ์์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ ์์ฑํ ๋ด๋ถ ํ๋ก์์ ๋ฅผ ๋ฐ๋ณต ์ฌ์ฌ์ฉํ ์ ์๋๋ก ์บ์ฑํด ๋๋ ๊ณต๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์(Library Cache) ์ด๋ผ๊ณ ํ๋ค.
- ์ํํธ ํ์ฑ(Soft Parsing) : SQL ํ์ฑ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ํด๋น SQL์ด ์กด์ฌํ๋ฉด ๋ฐ๋ก ์คํํ๋ค.
- ํ๋ ํ์ฑ(Hard Parsing) : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ SQL์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ต์ ํ ๋ฐ ๋ก์ฐ ์์ฑ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
ํ๋ ํ์ฑ์ด ๋๋ฆฐ ์ด์
ํ๋ ํ์ฑ(Hard Parsing)์ ์ตํฐ๋ง์ด์ ๊ฐ ์ต์ ํํ๋ ๋์ ๋ง์ ์ฐ์ฐ์ ์ํํ์ฌ ์คํ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ฏ๋ก CPU ์๋ชจ๊ฐ ํฌ๋ค. ์ด๋ฅผ ์ํด ๋ค์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๊ณ ๋ คํ๋ค.
- ํ ์ด๋ธ, ์นผ๋ผ, ์ธ๋ฑ์ค ๊ตฌ์กฐ์ ๊ดํ ๊ธฐ๋ณธ ์ ๋ณด
- ์ค๋ธ์ ํธ ํต๊ณ : ํ ์ด๋ธ ํต๊ณ, ์ธ๋ฑ์ค ํต๊ณ, (ํ์คํ ๊ทธ๋จ์ ํฌํจํ) ์นผ๋ผ ํต๊ณ
- ์์คํ ํต๊ณ : CPU ์๋, Single Block I/O ์๋, Multiblock I/O ์๋ ๋ฑ
- ์ตํฐ๋ง์ด์ ๊ด๋ จ ํ๋ผ๋ฏธํฐ
์ด ๊ณผ์ ์ ์ต์ ํํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์์ ๋ด๋ถ ํ๋ก์์ ๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ํจ์จ์ฑ์ ๋์ธ๋ค.
๐๏ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์
Shared Pool ๋ด์ ์์นํ๊ณ , SQL ๊ณต์ ์ปค์, PL/SQL ์ค๋ธ์ ํธ(์ปดํ์ผ์ ๊ฑฐ์น ํ๋ก์์ , ํจ์ ๋ฑ) ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ธ์ ํธ(ํ ์ด๋ธ, ์ธ๋ฑ์ค ๋ฑ)์ ๋ํ ์ ๋ณด๋ฅผ ์บ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค. ์ฝ๋ ์บ์๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
1. ์บ์ ์ ๋ณด์ ์ข ๋ฅ์ ๋ถ๋ฅ ๊ธฐ์ค
(1) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ์ค๋ธ์ ํธ(LCO)
LCO : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ๋ด ์ ์ฅ๋๋ ์ ๋ณด ๋จ์
- ์คํ๊ฐ๋ฅ LCO : SQL ์ปค์์ PL/SQL ์ค๋ธ์ ํธ์ฒ๋ผ ์คํ ๊ฐ๋ฅํ ์ค๋ธ์ ํธ
- ์ค๋ธ์ ํธ LCO : ์ฐธ์กฐํ๋ ํ ์ด๋ธ, ์ธ๋ฑ์ค, ํด๋ฌ์คํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด๋ค๋ ํ๋์ ์ค๋ธ์ ํธ๋ก์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ์ ์ฅ
- LCO ๊ฐ๊ฐ์๋ ์์ ์ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ์คํ๊ฐ๋ฅ LCO ๋ชฉ๋ก์ ๊ฐ๋๋ค.
- ์คํค๋ง ์ค๋ธ์ ํธ ์ ๋ณด์ ๊ฒฝ์ฐ, ๋์ ๋๋ฆฌ ์บ์์๋ ์บ์ฑ๋์ด ์์์๋ LCO ๊ฐ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๋ณต ์ ์ฅ ๊ด๋ฆฌํ๋ค.
(2) ๋ณด๊ด ๊ธฐ๊ฐ
- Stored Object : ์์ฑ ํ Drop ํ๊ธฐ ์ ๊น์ง ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ด๋๋ ์ค๋ธ์ ํธ ์ ๋ณด
- ์ : ํ ์ด๋ธ, ์ธ๋ฑ์ค, ํด๋ฌ์คํฐ, ๋ทฐ, ํธ๋ฆฌ๊ฑฐ, ํจํค์ง, ์ฌ์ฉ์ ์ ์ ํจ์/ํ๋ก์์ ๋ฑ
- ์์ฑ๋ ๋๋ถํฐ ์ด๋ฆ์ ๊ฐ์ง๋ ๊ฒ์ด ํน์ง
- Transient Object : ์คํ์์ ์ ์์ฑ๋ผ์ ์ธ์คํด์ค๊ฐ ๋ ์๋ ๋์์๋ง ์กด์ฌํ๋ ์ผ์์ ์ธ ์ค๋ธ์ ํธ ์ ๋ณด (ex, Anonymous)
- ์ : ์ปค์, Anonymous PL/SQL๋ฌธ
- ์ด๋ฆ์ ๋ฐ๋ก ์ง์ ํ์ง ์์ผ๋ฉฐ, ๋ฌธ์ฅ์ ๊ตฌ์ฑํ๋ ์ ์ฒด ๋ฌธ์์ด์ด ์ด๋ฆ ์ญํ ์ ํ๋ค.
2. ์บ์ฑ ๊ด๋ฆฌ ๋ฐฉ๋ฒ
(1) LRU ์๊ณ ๋ฆฌ์ฆ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์๋ Shared Pool ๋ด์ ์์นํ๊ธฐ ๋๋ฌธ์ LRU ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๊ด๋ฆฌ๋๊ณ ์๋ค. (Shared Pool๋ DB ๋ฒํผ ์บ์์ฒ๋ผ LRU ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ) ์ฌ์ฉ๋น๋๊ฐ ๋ฎ์ SQL์ ์บ์์์ ๋ฐ์ด๋์ผ๋ก์จ ์๋ก์ด SQL์ ์บ์ฑํ ์ ์๋๋ก ๊ณต๊ฐ์ ํ๋ณดํ๋ค.
(2) ํด์๊ตฌ์กฐ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์๋ DB ๋ฒํผ ์บ์์ฒ๋ผ ํด์ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ๋๋ค. ์ฆ, ํด์ ๋ฒํท์ LCO ํธ๋ค(LOC์ ์๋ณํ๊ณ ํ์ ํฌ์ธํธ ํ๋ ๋ฐ ์ฌ์ฉ)์ด ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐ๋ผ ์๊ณ , ํธ๋ค์ ํตํด LCO Heap์ ์ฐพ์๊ฐ๋ ๊ตฌ์กฐ๋ค. ํด์ ํจ์๋ฅผ ํตํด ๋ฆฌํด๋ ํด์ ๊ฐ์ ๊ฐ์ง๊ณ ํด์ ๋ฒํท์ ํ ๋นํ๋ค.
(3) ์ปค์
์ค๋ธ์ ํธ LCO(ํ ์ด๋ธ ์ ๋ณด)์ ์คํ๊ฐ๋ฅ LCO(SQL ์ปค์)๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ํจ๊ป ์ ์ฌ๋์ด ์๋ค. ์ปค์๋ Parent ์ปค์ ๋ฐ์ Child ์ปค์๊ฐ ์ฐ๊ฒฐ๋๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. SQL์ด ๋์ผํด๋ ์ปค์๋ฅผ ๊ณต์ ํ์ง ๋ชปํ๊ณ ๋ณ๋๋ก ์์ฑํด์ผ ํ ๋๊ฐ ์๋๋ฐ, ๊ทธ๋ด ๋ ๋ค์ค Child ์ปค์๋ฅผ ์ฌ์ฉํ๋ค.
3. Latch
Latch : ๋ฉ๋ชจ๋ฆฌ ๋ด ์์์ ๋ํด ๋์ ์ ๊ทผ ํ ๋, ์กฐ์จํ๊ณ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ๋์์ฃผ๋ ์ผ์ข ์ ์ ๊ธ์ฅ์น
(1) Shared Pool ๋์น
Shared Pool์์ ํน์ ์ค๋ธ์ ํธ ์ ๋ณด ๋๋ SQL ์ปค์๋ฅผ ์ํ Free Chunk๋ฅผ ํ ๋น๋ฐ์ผ๋ ค ํ ๋ ํ์ํ ๋์น๊ฐ Shared Pool ๋์น์ด๋ค. ์ด์ ์๋ ๋์น 1๊ฐ๋ก ๊ด๋ฆฌํ์์ง๋ง, 9i๋ถํฐ๋ 7๊ฐ๊น์ง ์ฌ์ฉํ ์ ์๋ค. ๋ง์ฝ, ๋์ ์ฌ์ฉ์๊ฐ ์๊ฐ์ ์ผ๋ก ๊ณผ๋ํ ํ๋ ํ์ฑ ๋ถํ๋ฅผ ์ผ์ผํจ๋ค๋ฉด Shared Pool ๋์น์ ๋ํ ๊ฒฝํฉํ์์ด ๋ฐ์ํ ์ ์๋ค.
(2) Library Cache ๋์น
DB ๋ฒํผ ์บ์์์ ์ฒด์ธ์ ์ฐ๊ฒฐ๋ ๋ฆฌ์คํธ ๊ตฌ์กฐ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด Cache Buffers Chains ๋์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ์ฒด์ธ์ ํ์ํ๊ณ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋จผ์ Library Cache ๋์น๋ฅผ ํ๋ํด์ผ ํ๋ค. ์ด์ ๋ํ ๊ฒฝํฉ์ด ๋ฐ์ํ ๋, latch : library cache ๋๊ธฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
Library Cache๊ฐ ๋ง์ง ์๊ธฐ ๋๋ฌธ์, ํ๋ ํ์ฑ๋ฟ๋ง ์๋๋ผ ์ํํธ ํ์ฑ์ด ๋ง์ด ๋ฐ์ํด๋ ๋์น์ ๋ํ ๊ฒฝํฉ์ด ์ฆ๊ฐํ๊ฒ ๋๋ค.
(3) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ Lock / Pin
DB ๋ฒํผ ์บ์์์ ๋ฒํผ ์์ฒด๋ฅผ ๋ณดํธํ๋ ค๊ณ ๋ฒํผ Lock์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ LCO๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ Lock / Pin์ ์ฌ์ฉํ๋ค. LCO์ ์ ๊ทผํ ๋๋ ๋จผ์ ํธ๋ค์ ๋ํ Lock์ ํ๋ํด์ผ ํ๋ค. ๊ทธ๋ฌ๊ณ ๋์, LCO์ ์ค์ ๋ด์ฉ์ด ๋ด๊ธด ํ์์ ์ ๋ณด๋ฅผ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝํ ๋๋ Pin์ ๊ฑธ์ด๋์ด์ผ ํ๋ค. ์ฆ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ํ์ Pin ํ๋ ค๋ฉด ๋จผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ Lock์ ํ๋ํด์ผ ํ๋ค.
Lock์ ํตํด LCO ํธ๋ค์ ๋ณดํธํ๊ณ , Pin์ LCO์ ์ค์ ๋ก ๋ด๊ธด Heap์ ๋ณดํธํ๋ค. ์ด๋ฅผ ํตํด LCO์ ์ฝ๊ณ , ์ฐ๊ณ , ์คํํ๋ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์บ์์ ๋ฐ๋ ค๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
(4) ๊ฒฝํฉํ์
- Shared Pool ๋์น / Library Catch ๋์น ๊ฒฝํฉ์ ์ํํธ/ํ๋ ํ์ฑ์ ๋์์ ์ฌํ๊ฒ ์ผ์ผํฌ ๋ ๋ฐ์ํ๋ค.
- Library Cache Lock / Pin ๋๊ธฐ ์ด๋ฒคํธ๋ ์ฃผ๋ก SQL ์ํ ๋์ค DDL์ ๋ ๋ฆด ๋ ๋ฐ์ํ๋ค.
4. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ์ต์ ํ
- ์ปค์๋ฅผ ๊ณต์ ํ ์ ์๋ ํํ๋ก ์์ฑ
- ํนํ, ๋ฐ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํด ๊ฐ์ ํํ์ SQL์ ๋ํ ๋ฐ๋ณต์ ์ธ ํ๋ ํ์ฑ์ด ์ผ์ด๋์ง ์๋๋ก ์ฒ๋ฆฌ
- ์ธ์ ์ปค์ ์บ์ฑ ๊ธฐ๋ฅ์ ์ด์ฉํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์์ SQL ์ฐพ๋ ๋น์ฉ ๊ฐ์ ์ฒ๋ฆฌ
- ์ ํ๋ฆฌ์ผ์ด์ ์ปค์ ์บ์ฑ์ ์ด์ฉํด Parse Call ๋ฐ์๋์ ๊ฐ์ ์ฒ๋ฆฌ
๐๏ธ ์ปค์ ๊ณต์
1. Cursor๋?
๊ณต์ ์ปค์ (Shared cursor) : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ๋ผ ์๋ Shared SQL Area
JAVA, PL/SQL ๋ฑ์์ SQL์ ์ํํ๋ฉด, ์๋ฒ ํ๋ก์ธ์ค๋ ํด๋น SQL์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ๋ผ ์๋์ง๋ฅผ ๋จผ์ ํ์ธํ๋ค.
์์ผ๋ฉด, ์ต์ ํ ๊ณผ์ ์ ํตํด ์คํ๊ณํ์ ๋ง๋ค๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ํ๋ค. ๊ทธ๋ ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ๋ผ ์๋ Shared SQL Area๋ฅผ '์ปค์'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ธ์ ์ปค์ (Session cursor) : Private SQL Area์ ์ ์ฅ๋ ์ปค์
Private SQL Area์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ๋ผ ์๋ ์ปค์๋ฅผ ์คํํ ๋, PGA ์์ญ์ ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งํ๋ค. Shared SQL Area๋ฅผ ์ฝ์ด ์ปค์๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ค์ Private SQL Area์ ๋ด๊ณ , ๊ณต์ ์ปค์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ ์งํ ๋ฟ๋ง ์๋๋ผ ์ปค์์ ์ํ ์ ๋ณด(open, bound, execute, close ๋ฑ)๋ ๊ด๋ฆฌํ๋ค. ์ปค์๋ฅผ ์คํํ๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ๋ผ ์๋ ์ปค์๋ฅผ ์ธ์คํด์คํํจ์ผ๋ก์จ PGA์ ์ปค์๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๊ณ , ์ค์ ๋ฐ์ดํฐ ์ถ์ถ์ ์์ํ ์ ์๋๋ก ์ค๋นํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ปค์ (Application Cursor) : ์ธ์ ์ปค์๋ฅผ ๊ฐ๋ฆฌํค๋ ํธ๋ค
PGA์ ์๋ ์ปค์๋ฅผ ํธ๋ค๋งํ๋ ค๋ฉด JAVA, PL/SQ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๋ฆฌ์์ค๋ฅผ ํ ๋นํด์ผ ํ๋๋ฐ ์ด๋ฅผ ์ปค์๋ผ๊ณ ํ๋ค.
2. ์ปค์ ๊ณต์
์ธ์ ์ปค์, ์ ํ๋ฆฌ์ผ์ด์ ์ปค์๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ "์ปค์๋ฅผ ๊ณต์ ํ๋ค."์ ์ปค์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ์ปค์๋ฅผ ์๋ฏธํ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ๊ณต์ ๋ผ ์๋ ์ปค์์ ์ํ ํต๊ณ๋ V$SQL์ ํตํด ์กฐํํ ์ ์๋ค.
- parse_calls : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์์ SQL ์ปค์๋ฅผ ์ฐพ์ผ๋ ค๋ ์์ฒญ ํ์
- loads : ํ๋ํ์ฑ์ ๊ฑฐ์น SQL ์คํ๊ณํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ์ ์ฌํ ํ์
- executions : SQL์ ์ํํ ํ์
- invalidations : ์ปค์๊ฐ ๋ฌดํจํ๋ ํ์
์์ ์ ๋ณด๋ฅผ ํตํด ํด๋น SQL์ด ๋ช ๋ฒ ํ๋ํ์ฑ๋์๋์ง, ์ํํธ ํ์ฑ๋์๋์ง ์ ์ ์๋ค. ์ฆ, ๊ณต์ ๋ ํ๋์ ์ปค์๋ฅผ ๋ช ๋ฒ ์ฌ์ฌ์ฉํ๋์ง ํ์ธํ ์ ์๋ค.
3. ๊ณต์ ๋ถ๊ฐ
(1) Child cursor ๊ณต์ ๋ถ๊ฐ
SQL ๋ฌธ์ฅ์ด 100% ๋์ผํ๋๋ SQL ์ปค์๋ฅผ ๊ณต์ ํ์ง ๋ชปํ ๊ฒฝ์ฐ, ๋ณ๋์ Child ์ปค์๋ฅผ ์์ฑํ๋ค. SQL ์ปค์์ฒ๋ผ ์คํ์์ ์ ์์ฑ๋ผ์ ์ธ์คํด์ค๊ฐ ๋ ์๋ ๋์์๋ง ์กด์ฌํ๋ Transient Object๋ ์ด๋ฆ์ ๋ฐ๋ก ์ง์ ํ์ง ์๊ณ ๋ฌธ์ฅ์ ๊ตฌ์ฑํ๋ ์ ์ฒด ๋ฌธ์์ด ๊ทธ๋๋ก๊ฐ LCO๋ฅผ ์๋ณํ๋ ์ด๋ฆ ์ญํ ์ ํ๋ค. ๊ทธ๋์ ์ ์ฒด ๋ฌธ์์ด์ ๊ฐ์ง๋ง ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์คํํด์ผ ํ๊ฑฐ๋, ํ์ฑ ์คํค๋ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค๋ธ์ ํธ๋ฅผ ์ฐธ์กฐํ๋ ์ํฉ์์ Child ์ปค์๊ฐ ํ์ํ๊ฒ ๋๋ค.
์ฆ, SQL๋ง๋ค ํ๋์ Parent ์ปค์๋ฅผ ๊ฐ์ง๋ฉฐ, Child ์ปค์๋ ์ฌ๋ฌ ๊ฐ ์ผ ์ ์๋ค(๋ค์ค Child ์ปค์). ๊ทธ๋ฌ๋ version count ์์น๊ฐ ๋์ SQL ์ผ์๋ก ์ปค์๋ฅผ ํ์ํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ ์๋นํ๋ฏ๋ก library cache ๋์น์ ๋ํ ๊ฒฝํฉ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ฆ๊ฐ์ํจ๋ค. ๋ง์ SQL ์ปค์๋ฅผ ๊ฐ๋ ๊ตฌ์กฐ์ผ์๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ํจ์จ์ด ๋๋น ์ง๋ค.
ํ๋์ SQL ๋ฌธ์ฅ์ด ์ฌ๋ฌ ๊ฐ Child ์ปค์๋ฅผ ๊ฐ๊ฒ ๋๋ ์ด์
- SQL์์ ์ฐธ์กฐํ๋ ์ค๋ธ์ ํธ ๋ช ์ด ๊ฐ์ง๋ง, SQL์ ์คํํ ์ฌ์ฉ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ๋ฆฌํฌ ๋
- ์ฐธ์กฐ ์ค๋ธ์ ํธ๊ฐ ๋ณ๊ฒฝ๋ผ ์ปค์๊ฐ ๋ฌดํจํ๋๋ฉด ์ดํ ๊ทธ ์ปค์๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ค๋ ์ธ์ ์ ์ํด ๋ค์ ํ๋ํ์ฑ๋ผ์ผ ํ๋๋ฐ, ํน์ ์ธ์ ์ด ์์ง ๊ธฐ์กด ์ปค์๋ฅผ ์ฌ์ฉ ์ค(Pin) ์ผ ๋
- ์ตํฐ๋ง์ด์ ๋ชจ๋๋ฅผ ๋น๋กฏํด ์ตํฐ๋ง์ด์ ๊ด๋ จ ํ๋ผ๋ฏธํฐ๊ฐ ๋ค๋ฅผ ๋
- ์ ๋ ฅ๋ ๋ฐ์ธ๋ ๊ฐ์ ๊ธธ์ด๊ฐ ํฌ๊ฒ ๋ค๋ฅผ ๋
- NLS ํ๋ผ๋ฏธํฐ๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํ์ ๋
- SQL ํธ๋ ์ด์ค๋ฅผ ํ์ฑํํ์ ๋
(2) Parent cursor ๊ณต์ ๋ถ๊ฐ
์๋ฏธ์ ์ผ๋ก ๊ฐ๊ณ ์คํํ๊ฒฝ์ด ๊ฐ์๋ฐ๋ ์ปค์๋ฅผ ๊ณต์ ํ์ง ๋ชปํด Parent ์ปค์ ์์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ ์์ฑ๋๋ ๊ฒฝ์ฐ
- ๊ณต๋ฐฑ ๋ฌธ์ ๋๋ ์ค ๋ฐ๊ฟ
- ๋์๋ฌธ์ ๊ตฌ๋ถ
- ํ ์ด๋ธ Owner ๋ช ์
- ์ฃผ์
- ์ตํฐ๋ง์ด์ Hint
- ์กฐ๊ฑด์ ๋น๊ต ๊ฐ (๋ฐ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , Literal ๊ฐ์ผ๋ก ๋ฌธ์์ด์ ๋์ฒดํ๋ ๊ฒฝ์ฐ)
๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ํจ์จ์ด ํฌ๊ฒ ๋๋น ์ง์ง ์์ง๋ง, 6๋ฒ์ ๊ฒฝ์ฐ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๋ค.
Reference
'DB > SQLP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLP] 1-5. I/O ๋ฉ์ปค๋์ฆ (0) | 2025.02.11 |
---|---|
[SQLP] 1-4. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ ์ต์ ํ (0) | 2025.02.09 |
[SQLP] 1-2. SQL ํ์ฑ๊ณผ ์ต์ ํ (0) | 2025.02.09 |
[SQLP] 1-1. Oracle ์ํคํ ์ฒ (0) | 2025.02.09 |
[SQLP] ๋น์ ๊ณต์ ๊ฐ๋ฐ์, ์ผ๊ทผ ํ๋ฉด์ 6๊ฐ์ ๋ง์ SQLP ํฉ๊ฒฉ ํ๊ธฐ ๋ฐ ๊ณต๋ถ ๋ฐฉ๋ฒ (์ 51ํ ์ํ) ๐ (0) | 2024.10.06 |