Buffer Pinning ๊ธฐ๋ฒ• (in Oracle)

2023. 12. 9. 18:58ใ†Database/DB ์Šคํ„ฐ๋””

์ผ๋ฐ˜์ ์œผ๋กœ Index Scan์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ๊ธฐ๋ฒ•๋“ค(Index Range Scan, Index Unique Scan ๋“ฑ)์€ Single Block IO๋ฅผ ํ™œ์šฉํ•œ๋‹ค. (ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋ฉด ์ด์ „ ๊ธ€ ์ฐธ์กฐ -> ํ…Œ์ด๋ธ” ์Šค์บ” ๋ฐฉ์‹์— ๋”ฐ๋ฅธ DB Block IO ์ „๋žต)

๋’ค์— ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์ฝ์–ด์•ผ ํ•  ๋ธ”๋ก์ด ๋ฒ„ํผ์— ์กด์žฌํ•œ๋‹ค๊ณ  ํ•ด๋„ ํ•ด๋‹น ๋ธ”๋ก์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ํฌ์ธํ„ฐ๋ฅผ ํš๋“ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์ฝ์–ด์•ผ ํ•  ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์—”, ๊ทธ ์ˆ˜ ๋งŒํผ ๋…ผ๋ฆฌ์  IO๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ณ  ๋งค๋ฒˆ ํฌ์ธํ„ฐ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ํš๋“ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ์ธ๋ฑ์Šค ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ ์ฝ์–ด๋‚ธ ํ…Œ์ด๋ธ” ROWID๊ฐ€ ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•œ ๋ธ”๋ก์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋ฉด? ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ ์ˆ˜ ๋งŒํผ ํฌ์ธํ„ฐ ํš๋“ ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์œผ๋กœ ๋ด์•ผํ• ๊นŒ?

 

Buffer ๋‚ด ํŠน์ • ๋ธ”๋ก์˜ ์ฃผ์†Œ ํš๋“ ๊ณผ์ •

์„œ๋ก ์˜ ์˜๋ฌธ์— ๋‹ค๊ฐ€๊ฐ€๊ธฐ ์ „์— ๋จผ์ € ๋ฒ„ํผ ๋‚ด ํŠน์ • ๋ธ”๋ก์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

Index Scan์„ ํ†ตํ•ด ํš๋“ํ•œ ROWID์—๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ํŒŒ์ผ์˜ ์ •๋ณด์™€ ๋ธ”๋ก์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ๋‹ค.

๋‹ค๋งŒ ๋งค๋ฒˆ ๋””์Šคํฌ IO๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜๋Š” ์—†์œผ๋‹ˆ ์„œ๋ก ์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋จผ์ € ๋ฒ„ํผ ์บ์‹œ์— ํ•ด๋‹น ๋ธ”๋ก์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด ์กด์žฌํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ์ด์šฉ๋˜๋Š” ๊ฒƒ๋„ ROWID์ด๋‹ค.

DB๋Š” ์ด ROWID๋ฅผ ํ•ด์‹œ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ•ด์‹œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์‹œ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ํŠน์ • ํ•ด์‹œ ์ฒด์ธ์„ ํŠน์ •ํ•œ๋‹ค.

ํ•˜๋‚˜์˜ ํ•ด์‹œ ์ฒด์ธ์—๋Š” ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฒ„ํผ ๋ธ”๋ก๋“ค์˜ ํ—ค๋”๊ฐ€ ์ฒด์ธ ํ˜•ํƒœ๋กœ ์ด์–ด์ ธ ์žˆ์œผ๋ฉฐ ๊ฐ ํ—ค๋”์—๋Š” ํ•ด๋‹น ๋ฒ„ํผ ๋ธ”๋ก์˜ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ ์ฃผ์†Œ(ํฌ์ธํ„ฐ)๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

์ด ๋•Œ ํ•ด์‹œ ์ฒด์ธ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด์‹œ ์ฒด์ธ ๋ž˜์น˜๋ฅผ ํš๋“ํ•ด์•ผ ํ•œ๋‹ค. 

ํ•ด์‹œ ์ฒด์ธ ๋ž˜์น˜๋ž€, ํŠน์ • ๋ฒ„ํผ ๋ธ”๋ก์— ๋Œ€ํ•œ ๋™์‹œ๋‹ค๋ฐœ์ ์ธ ์ ‘๊ทผ ๋ฐ ์ˆ˜์ • ์ž‘์—…์€ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ œํ•œํ•˜๋Š” ์ผ์ข…์˜ ์ƒํ˜ธ ๋ฐฐ์ œ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์„ธ์…˜์ด ํ•˜๋‚˜์˜ ํ•ด์‹œ ์ฒด์ธ์— ๋ชฐ๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, ๊ฒฝํ•ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ ์ƒ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•œ๋‹ค. (๋ฌผ๋ก  ์ดํ›„์—๋Š” ์ฒด์ธ ๋ž˜์น˜์—๋„ ๊ณต์œ  ๋ž˜์น˜(์ฝ๊ธฐ ์ „์šฉ), ๋…์  ๋ž˜์น˜(์“ฐ๊ธฐ) ๋“ฑ์˜ ๋ ˆ๋ฒจ์„ ๋‘์–ด ๊ฒฝํ•ฉ์„ ์–ด๋Š ์ •๋„ ํ•ด์†Œํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.)

์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ ์ดํ›„์—๋‚˜ ๋ฒ„ํผ ๋ธ”๋ก์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฆ‰, ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  IO์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๊ณผ์ •๋งŒ ๋†“๊ณ  ๋ณด๋”๋ผ๋„ ๊ฒฐ์ฝ” ๋ฌด์‹œํ•  ์ˆ˜์ค€์ด ๋ชป๋œ๋‹ค.

 

Buffer Pinning

๋งŒ์•ฝ ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๋“ค์ด ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ณด๋‹ค ํ›จ์”ฌ ์ ์€ ๋ช‡๊ฐœ์˜ ๋ธ”๋ก ๋งŒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ƒํ™ฉ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด, ์ธ๋ฑ์Šค ์Šค์บ”์€ Single Block IO์ด๋ฏ€๋กœ ๋งค๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ์ƒˆ๋กญ๊ฒŒ ์ˆ˜ํ–‰ํ• ๊นŒ?

Oracle์—์„œ๋Š” Buffer Pinning์ด๋ผ๋Š” ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ƒํ™ฉ์„ ๊ฐœ์„ ํ•œ๋‹ค.

Buffer Pinning์ด๋ž€ ํ•œ๋ฒˆ์˜ Call์—์„œ 2๋ฒˆ ์ด์ƒ ํ˜ธ์ถœ๋œ ๋ธ”๋ก์— ๋Œ€ํ•ด, ์ด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ ์ฃผ์†Œ๋ฅผ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. (๋ง ๊ทธ๋Œ€๋กœ ํŠน์ • ๋ฒ„ํผ ๋ธ”๋ก์„ Pin ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ)

์ด๋ฅผ ํ†ตํ•˜๋ฉด ์•ž์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ ์ฃผ์†Œ๋ฅผ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ–ˆ๋˜ ํ•ด์‹œ ํ•จ์ˆ˜ ํ˜ธ์ถœ, ํ•ด์‹œ ํ…Œ์ด๋ธ” ํƒ์ƒ‰, ํ•ด์‹œ ์ฒด์ธ ๋ž˜์น˜ ํš๋“, ํ•ด์‹œ ์ฒด์ธ ํƒ์ƒ‰ ๋“ฑ์˜ ๊ณผ์ •์„ ์ „๋ถ€ ๊ฑด๋„ˆ ๋›ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ ์ƒ ์ด์ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

ํŠนํžˆ, ํŠน์ • ์ธ๋ฑ์Šค๊ฐ€ ์ •๋ ฌ๋œ ํ˜•ํƒœ์— ๋งž๊ฒŒ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋„ ๋””์Šคํฌ ๋ ˆ๋ฒจ์—์„œ ์„œ๋กœ ๋ชจ์—ฌ์„œ ๋น„์Šทํ•œ ๋ธ”๋ก๋“ค์— ์ €์žฅ๋˜๊ณ  ์žˆ๋‹ค๋ฉด Buffer Pinning์˜ ์ด์ ์€ ๋” ๊ทน๋Œ€ํ™”๋œ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ํŠน์ • ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ๊ฐ€ ์ข‹๋‹ค๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

 

Clustering Factor ๊ฐœ์„ ?

ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ๊ฐ€ ์ข‹์„ ๋•Œ Buffer Pinning ๊ธฐ๋ฒ•์œผ๋กœ ์–ป๋Š” ์ด์ ๋„ ๊ทน๋Œ€ํ™”๋œ๋‹ค๋Š” ๊ฒฐ๋ก ์ด ๋„์ถœ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์‚ฌ์‹ค ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ๋ฅผ ์œ„ํ•ด ๋ญ”๊ฐ€ ํŠน๋ณ„ํ•œ ์กฐ์น˜๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์€ ์•„๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ์œ„ํ•ด์„œ๋Š” ์ด๋ฅผ ์œ„ํ•œ ๊ธฐ์ค€์ด ํ•„์š”ํ•˜๊ณ , ์ด๋Š” ํŠน์ • ์ธ๋ฑ์Šค๊ฐ€ ๋  ํ„ฐ์ธ๋ฐ ์ด ๊ฒฝ์šฐ ํ•ด๋‹น ํ…Œ์ด๋ธ”์—์„œ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ํšจ์œจ์€ ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํŠน์ • ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ๋ฅผ ๊ฐœ์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด Table Reorg๋‚˜ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹ ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ฐธ์กฐ

์นœ์ ˆํ•œ SQL ํŠœ๋‹, 2018 - ์กฐ์‹œํ˜• ์ €

 

[I. ์˜ค๋ผํด ์•„ํ‚คํ…์ฒ˜] DB Lock(Pin)

03. DB Lock(Pin) (01) DB Lock ๊ฐœ์š”๋ž˜์น˜๋ฅผ ๋นจ๋ฆฌ ๋†“์ง€ ์•Š์œผ๋ฉด ๊ฒฝํ•ฉ์ด ๋ฐœ์ƒํ•œ๋‹คDB ๋ฒ„ํผ์บ์‹œ์—์„œ ์›ํ•˜๋Š” ๋ฒ„ํผ๋ธ”๋Ÿญ์„ ์ฐพ์•˜๋‹ค๋ฉด ๊ฐ€๊ธ‰์  ๋นจ๋ฆฌ ์ฅ๊ณ  ์žˆ๋Š” ๋ž˜์น˜๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•˜๋‚˜์˜ cache buffer

codeforest-document.tistory.com

 

์˜ค๋ผํด ๋‚ด๋ถ€๊ตฌ์กฐ์™€ OWI (๋ฒ„ํผ ์บ์‹œ์™€ OWI)

 ๋ฒ„ํผ ์บ์‹œ์™€ OWI ๋ฒ„ํผ ์บ์‹œ ๊ตฌ์กฐ  - ์˜ค๋ผํด์€ ๋ฌผ๋ฆฌ์ ์ธ I/O๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๊ทผ์— ์‚ฌ...

blog.naver.com