ํ”„๋กœ์ ํŠธ/DB ์ž๋™ํ™”

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ ์ •๋ฆฌ (2) Oracle

THE NICOLE 2026. 6. 19. 14:42

ํ•ต์‹ฌ ์š”์•ฝ

์ตœ๊ทผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ผ์ผ ์ ๊ฒ€์„ ์ž๋™ํ™”ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋งก๊ฒŒ ๋˜๋ฉด์„œ, DBA๊ฐ€ ๋งค์ผ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ๋“ค์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€์—์„œ MySQL์„ ๋‹ค๋ค˜๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” Oracle ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. Oracle์€ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉด์„œ๋„ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ MySQL๊ณผ ๊ฝค ๋‹ฌ๋ผ์„œ, ์ง€ํ‘œ ์ด๋ฆ„๋„ ์ ˆ๋ฐ˜์ฏค์€ ์ฒ˜์Œ ๋ณด๋Š” ๋‹จ์–ด๋“ค์ด์—ˆ์Šต๋‹ˆ๋‹ค. Redo, Undo, Library Cache, Hard Parse, ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ฐ™์€ ๋ง์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋„ ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด ๋‘๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” Oracle(๋ฐ Oracle on RDS)์—์„œ ์ž์ฃผ ๋ณด๋Š” ์ง€ํ‘œ๋“ค์„ โ‘  ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ โ‘ก ํ‰์†Œ ์–ด๋А ์ •๋„ ๊ฐ’์ด ์ •์ƒ์ธ์ง€(์‹ค์ œ ๊ด€์ธก ๋ฒ”์œ„·ํ‰๊ท ) โ‘ข ๊ฐ’์ด ํŠ€๋ฉด ๋ฌด์—‡์„ ์˜์‹ฌํ•ด์•ผ ํ•˜๋Š”์ง€ โ‘ฃ ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์€ ์ง€ํ‘œ โ‘ค ์ง์ ‘ ํ™•์ธํ•˜๋Š” ์ฟผ๋ฆฌ๋กœ ๋ฌถ์–ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. Oracle๋งŒ์˜ ๊ฐœ๋…(SGA, Redo, Undo, Library Cache, ํŒŒ์‹ฑ, ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค)์€ ์ง€ํ‘œ๋ฅผ ๋ณด๊ธฐ ์ „์— ๋จผ์ € ํ•œ ๋ฒˆ ํ’€์–ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐœ๋…๋“ค์ด ๊ทธ๋Œ€๋กœ ๋’ค์˜ ์ง€ํ‘œ๋กœ ์ด์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ ์ง€ํ‘œ๋งˆ๋‹ค ๊ทธ๊ฒƒ์„ ์‹ค์ œ๋กœ ์›€์ง์ด๊ฒŒ ๋งŒ๋“œ๋Š” ์ฟผ๋ฆฌ ํŒจํ„ด์„ "๋‚˜์œ ์˜ˆ → ๊ณ ์นœ ์˜ˆ" SQL๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ ํ•จ๊ป˜ ์ ์—ˆ๊ณ , ์‹ค์ œ ์žฅ์• ๋กœ ์ด์–ด์ง€๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค.

๋ณธ๋ฌธ์˜ "๊ด€์ธก๊ฐ’"์€ ์‹ค์ œ ์šด์˜ ์ธ์Šคํ„ด์Šค ํ•œ ๋Œ€์—์„œ 1๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ํ•œ ๋‹ฌ๊ฐ„ ์ˆ˜์ง‘ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅด๋ฏ€๋กœ ์ ˆ๋Œ€์ ์ธ ๊ธฐ์ค€์€ ์•„๋‹ˆ๊ณ , "๋ณดํ†ต ์ด ์ •๋„๊ตฌ๋‚˜"๋ฅผ ๊ฐ ์žก๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.


Oracle์€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ๊ฐ€

์ง€ํ‘œ๋ฅผ ๋ณด๊ธฐ ์ „์—, Oracle์ด MySQL·PostgreSQL๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€๋ถ€ํ„ฐ ์งš๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์„ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‘ CPU·๋ฉ”๋ชจ๋ฆฌ·์„ธ์…˜·I/O ๊ฐ™์€ ๊ณตํ†ต ์ง€ํ‘œ๋ฅผ ๋ณด์ง€๋งŒ, ๊ทธ ์œ„์— ๊ฐ์ž ๊ณ ์œ ํ•œ ์ง€ํ‘œ๊ฐ€ ์–นํž™๋‹ˆ๋‹ค. MySQL์€ InnoDB์—์„œ ๋‚˜์˜ค๋Š” ์ง€ํ‘œ(๋ฒ„ํผํ’€ ์ ์ค‘๋ฅ , Row Lock Waits ๋“ฑ)๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ, Oracle์€ Redo, Undo, Library Cache, ํŒŒ์‹ฑ, ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์—์„œ ๋‚˜์˜ค๋Š” ์ง€ํ‘œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ์–ด๋“ค์ด ์ฒ˜์Œ์ด๋ฉด ์ง€ํ‘œ ์ด๋ฆ„์ด ์™ธ๊ณ„์–ด์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ, ํ•ต์‹ฌ ๊ฐœ๋…์„ ๋จผ์ € ์‰ฝ๊ฒŒ ํ’€์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ฐœ๋…๋“ค์ด ๊ทธ๋Œ€๋กœ ๋’ค์˜ ์ง€ํ‘œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

Oracle์˜ ํ•ต์‹ฌ ๊ฐœ๋… ๋จผ์ € ํ’€๊ธฐ

  • ์ธ์Šคํ„ด์Šค์™€ SGA(๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ): Oracle์„ ์ผœ๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ๊ฑฐ๋Œ€ํ•œ ๊ณต์œ  ๊ณต๊ฐ„์„ ํ•˜๋‚˜ ์žก์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ SGA(System Global Area) ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ™์ด ์”๋‹ˆ๋‹ค. ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์บ์‹ฑํ•˜๋Š” ๋ฒ„ํผ ์บ์‹œ, SQL ์‹คํ–‰๊ณ„ํš์„ ์บ์‹ฑํ•˜๋Š” Library Cache, Redo๋ฅผ ์ž ์‹œ ๋ชจ์œผ๋Š” Redo ๋กœ๊ทธ ๋ฒ„ํผ๊ฐ€ ๋ชจ๋‘ ์ด SGA ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค. MySQL์˜ ๋ฒ„ํผํ’€์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์ด SGA ์•ˆ์˜ ๋ฒ„ํผ ์บ์‹œ๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์‚ฌ์šฉ์ž ํ•œ ๋ช…๋งˆ๋‹ค ๋”ฐ๋กœ ์“ฐ๋Š” ์ž‘์—… ๊ณต๊ฐ„์€ PGA๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ์ •๋ ฌ·ํ•ด์‹œ ์ž‘์—… ๋“ฑ์— ์”๋‹ˆ๋‹ค.) SGA๋Š” "๋ชจ๋‘๊ฐ€ ๊ณต์œ ํ•˜๋Š” ํฐ ์ฑ…์ƒ", PGA๋Š” "๊ฐœ์ธ ์ฑ…์ƒ" ์ •๋„๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • Redo(๋ฆฌ๋‘, ๋ณ€๊ฒฝ ๋กœ๊ทธ): ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ๋งˆ๋‹ค "๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟจ๋Š”์ง€"๋ฅผ ๋จผ์ € ์ ์–ด ๋‘๋Š” ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. ์ •์ „์ด๋‚˜ ์žฅ์• ๋กœ DB๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ฃฝ์–ด๋„, ์ด Redo ๊ธฐ๋ก์„ ๋‹ค์‹œ ์ ์šฉํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ๊ณ„ ์žฅ๋ถ€์— ๊ฑฐ๋ž˜๋ฅผ ์ ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์ „์— ์žฅ๋ถ€์— ๋จผ์ € ์ ์–ด ๋‘๋ฏ€๋กœ, ์‚ฌ๊ณ ๊ฐ€ ๋‚˜๋„ ์žฅ๋ถ€๋ฅผ ๋ณด๊ณ  ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT/UPDATE/DELETE)์ด ๋งŽ์œผ๋ฉด Redo๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋’ค์˜ Redo Entries·Log File Sync ์ง€ํ‘œ๊ฐ€ ์ด๊ฒƒ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.
  • Undo(์–ธ๋‘, ๋˜๋Œ๋ฆฌ๊ธฐ·์ฝ๊ธฐ ์ผ๊ด€์„ฑ): ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์ „์˜ "์›๋ž˜ ๊ฐ’"์„ ๋”ฐ๋กœ ๋ณด๊ด€ํ•ด ๋‘๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค. โ‘  ํŠธ๋žœ์žญ์…˜์ด ROLLBACK ํ•˜๋ฉด ์ด ์›๋ž˜ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ณ , โ‘ก ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€๊ฒฝ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ๋ณ€๊ฒฝ ์ „์˜ ๊นจ๋—ํ•œ ๋ชจ์Šต์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค(์ฝ๊ธฐ ์ผ๊ด€์„ฑ). ์‚ฌ์ง„์„ ์ˆ˜์ •ํ•ด๋„ ์›๋ณธ์„ ๋”ฐ๋กœ ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋’ค์˜ Undo Change Vector Size·DBWR Undo Block Writes·Consistent Reads ์ง€ํ‘œ๊ฐ€ ์ด๊ฒƒ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.
  • Library Cache(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ, SQL ์‹คํ–‰๊ณ„ํš ์บ์‹œ): SQL ํ•œ ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด Oracle์€ ๋จผ์ € ๊ทธ ๋ฌธ์žฅ์„ ๋ถ„์„ํ•ด "์–ด๋–ค ์ธ๋ฑ์Šค๋ฅผ ํƒ€๊ณ  ์–ด๋–ค ์ˆœ์„œ๋กœ ์ฝ์„์ง€"๋ผ๋Š” ์‹คํ–‰๊ณ„ํš์„ ์„ธ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ„์„์€ ๋น„์šฉ์ด ํฐ ์ž‘์—…์ด๋ผ, ํ•œ ๋ฒˆ ์„ธ์šด ์‹คํ–‰๊ณ„ํš์„ SGA ์•ˆ์˜ Library Cache์— ๋ณด๊ด€ํ•ด ๋‘๊ณ  ๊ฐ™์€ ๋ฌธ์žฅ์ด ๋˜ ์˜ค๋ฉด ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์ฃผ ์“ฐ๋Š” ์š”๋ฆฌ๋ฒ•์„ ๋งค๋ฒˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ์งœ์ง€ ์•Š๊ณ  ์ ์–ด ๋‘” ๋ ˆ์‹œํ”ผ๋ฅผ ๋‹ค์‹œ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์‹ฑ(Hard parse vs Soft parse): SQL ๋ฌธ์žฅ์ด ๋“ค์–ด์™”์„ ๋•Œ ์‹คํ–‰๊ณ„ํš์„ ์ฐพ๋Š” ๊ณผ์ •์„ ํŒŒ์‹ฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Library Cache์— ์ด๋ฏธ ๊ฐ™์€ ๋ฌธ์žฅ์˜ ์‹คํ–‰๊ณ„ํš์ด ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š”๋ฐ, ์ด๊ฒƒ์ด Soft parse(์†Œํ”„ํŠธ ํŒŒ์Šค) ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์บ์‹œ์— ์—†์–ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ถ„์„ํ•ด ์‹คํ–‰๊ณ„ํš์„ ์ƒˆ๋กœ ์„ธ์›Œ์•ผ ํ•˜๋ฉด Hard parse(ํ•˜๋“œ ํŒŒ์Šค) ์ž…๋‹ˆ๋‹ค. ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€, ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋งค๋ฒˆ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ•์€ SQL์€ Oracle ์ž…์žฅ์—์„œ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๋ฌธ์žฅ์œผ๋กœ ๋ณด์—ฌ์„œ Hard parse๊ฐ€ ํญ์ฆํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Oracle ์„ฑ๋Šฅ ๋ฌธ์ œ์˜ ๋‹จ๊ณจ ์›์ธ์ด๊ณ , ๋’ค์˜ Parse Count (Hard)·Library Cache Lock ์ง€ํ‘œ๊ฐ€ ์ด๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค(์ €์žฅ ๊ณต๊ฐ„): Oracle์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”·์ธ๋ฑ์Šค๋Š” ์–ด๋А ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์— ์ €์žฅํ• ์ง€ ์ •ํ•ด์ง€๊ณ , ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋Š” ์‹ค์ œ ๋””์Šคํฌ ํŒŒ์ผ(๋ฐ์ดํ„ฐ ํŒŒ์ผ)์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. ์ฐฝ๊ณ ๋ฅผ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋ˆ  "์ด ๊ตฌ์—ญ์—” ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ, ์ € ๊ตฌ์—ญ์—” ํšŒ์› ๋ฐ์ดํ„ฐ" ์‹์œผ๋กœ ๋‘๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณต๊ฐ„์ด ๊ฐ€๋“ ์ฐจ๋ฉด ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜ ์—†์–ด ์žฅ์• ๋กœ ์ง๊ฒฐ๋˜๋ฏ€๋กœ, ์‚ฌ์šฉ๋ฅ ์„ ๋Š˜ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค. (RDS ํ™˜๊ฒฝ์—์„œ๋Š” ์ธ์Šคํ„ด์Šค ์ „์ฒด์˜ Free Storage Space๋กœ๋„ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค.)
  • ๋ธ”๋ก(block): Oracle์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ตœ์†Œ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ํ–‰ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ํ–‰์ด ๋‹ด๊ธด "๋ธ”๋ก" ๋‹จ์œ„๋กœ ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ค๊ฐ‘๋‹ˆ๋‹ค. ๋’ค์˜ Physical Reads·Session Logical Reads๊ฐ€ ์ด ๋ธ”๋ก ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.

์ด ๊ฐœ๋…๋“ค์„ ๋จธ๋ฆฌ์— ๋„ฃ๊ณ  ๋ณด๋ฉด, ๋’ค์— ๋‚˜์˜ค๋Š” 33๊ฐœ ์ง€ํ‘œ๊ฐ€ ๋”ฐ๋กœ ๋…ธ๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ๊ทธ๋ฆผ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.


๋“ค์–ด๊ฐ€๊ธฐ ์ „์— — ์ง€ํ‘œ๋ฅผ ๋ณด๋Š” ๋‘ ๊ฐ€์ง€ ๊ด€์ 

์ง€ํ‘œ๋ฅผ ๋ณผ ๋•Œ๋Š” ๋ณดํ†ต ๋‘ ๊ฐ€์ง€ ๊ธฐ์ค€์„ ๊ฐ™์ด ์”๋‹ˆ๋‹ค.

์ฒซ์งธ๋Š” ์ ˆ๋Œ€ ์ž„๊ณ„๊ฐ’์ž…๋‹ˆ๋‹ค. "CPU ์‚ฌ์šฉ๋ฅ  80% ์ด์ƒ์ด๋ฉด ์œ„ํ—˜" ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์ •ํ•œ ์„ ์„ ๋„˜์—ˆ๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค. ๊ธฐ์ค€์ด ๋ช…ํ™•ํ•˜์ง€๋งŒ, DB๋งˆ๋‹ค ์ •์ƒ ๋ฒ”์œ„๊ฐ€ ๋‹ฌ๋ผ ์ž„๊ณ„๊ฐ’๋„ DB๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‘˜์งธ๋Š” ํ‰์†Œ ๋Œ€๋น„ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ์ž„๊ณ„๊ฐ’์„ ๋„˜์ง€ ์•Š์•˜๋”๋ผ๋„ "์–ด์ œ๊นŒ์ง€ ํ‰๊ท  10์ด๋˜ ๊ฐ’์ด ์˜ค๋Š˜ 40์œผ๋กœ ๋›ฐ์—ˆ๋‹ค" ๋ฉด ๋ฌด์–ธ๊ฐ€ ๋‹ฌ๋ผ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„์œ ํ•˜์ž๋ฉด ์ ˆ๋Œ€ ์ž„๊ณ„๊ฐ’์€ ๊ฑด๊ฐ•๊ฒ€์ง„์˜ ์ •์ƒ ์ˆ˜์น˜ํ‘œ์ด๊ณ , ํ‰์†Œ ๋Œ€๋น„ ๋ณ€ํ™”๋Š” ํ‰์†Œ ๋‚ด ์ปจ๋””์…˜๊ณผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋ด์•ผ ๋†“์น˜๋Š” ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. Oracle์—๋Š” Redo Entries๋‚˜ Undo Change Vector Size์ฒ˜๋Ÿผ ํ‰์†Œ์—” ์ž‘๋‹ค๊ฐ€ ๋ฐฐ์น˜ ๋•Œ ์ˆ˜๋ฐฑ, ์ˆ˜์ฒœ ๋ฐฐ๋กœ ํŠ€๋Š” ์ง€ํ‘œ๊ฐ€ ๋งŽ์•„์„œ, ํŠนํžˆ "ํ‰์†Œ ๋Œ€๋น„ ๋ณ€ํ™”"๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•œ ๊ฐ€์ง€ ๋”, ์ง€ํ‘œ๋Š” ๊ฑฐ์˜ ํ˜ผ์ž ํŠ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ์ง€ํ‘œ๋งˆ๋‹ค "ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ" ๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฐ’์ด ํŠ€์—ˆ์„ ๋•Œ ์˜†์˜ ์ง€ํ‘œ๊ฐ€ ๊ฐ™์ด ์˜ฌ๋ž๋Š”์ง€๋กœ ์›์ธ์˜ ๋ฐฉํ–ฅ์ด ๊ฐˆ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


1. CPU · ๋ฉ”๋ชจ๋ฆฌ · ๋””์Šคํฌ

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

(OS) Cpu Usage (%)

์„œ๋ฒ„์˜ CPU ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ๋ณด๋Š” ์ง€ํ‘œ์ด๊ณ  ์˜๋ฏธ๋„ ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค. CPU๋Š” ๊ฒฐ๊ตญ ์ฟผ๋ฆฌ๋ฅผ ์‹ค์ œ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ์ผ๊พผ์ด๋ผ, ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ(์ •๋ ฌ·์กฐ์ธ·์ง‘๊ณ„·ํ’€ ์Šค์บ”)์ด๋‚˜ ์žฆ์€ Hard parse๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 15.5%, ๋ฒ”์œ„ ์•ฝ 3.7 ~ 44%. MySQL ์ธ์Šคํ„ด์Šค๋ณด๋‹ค๋Š” ๋†’๊ฒŒ ๊น”๋ ค ์žˆ๊ณ , ์ˆœ๊ฐ„์ ์œผ๋กœ 40%๋Œ€๊นŒ์ง€ ์˜ค๋ฅด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ๋ณดํ†ต ๊ฒฝ๊ณ  60%, ์œ„ํ—˜ 80%๋กœ ์žก์Šต๋‹ˆ๋‹ค. 80%๋ฅผ ๋„˜์–ด ์ง€์†๋˜๋ฉด ์ฟผ๋ฆฌ ์‘๋‹ต์ด ๋А๋ ค์ง€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ(ํ’€ ์Šค์บ”·์ •๋ ฌ·์กฐ์ธ), ๊ฐ‘์ž๊ธฐ ๋Š˜์–ด๋‚œ ํ™œ์„ฑ ์„ธ์…˜, ๋Œ€๋Ÿ‰ ๋ฐฐ์น˜, ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ๋ฏธ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ Hard parse ํญ์ฆ. CPU๋งŒ ๋‹จ๋…์œผ๋กœ ํŠ€๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ฌผ๊ณ  ๋ณดํ†ต Active Session์ด๋‚˜ ์ฝ๊ธฐ๋Ÿ‰(Physical/Logical Reads)์ด ๊ฐ™์ด ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

Oracle์—์„œ CPU๋ฅผ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ์ „ํ˜•์ ์ธ ์ฟผ๋ฆฌ๋Š” "ํ•  ์ผ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋– ์•ˆ๋Š”" ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ๋ชป ํƒ€๋Š” ์กฐ๊ฑด, ํ•จ์ˆ˜๋กœ ๊ฐ์‹ผ ์ปฌ๋Ÿผ์ด ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: created_at์— ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์–ด๋„ TRUNC ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ๋ฌด๋ ฅํ™”๋œ๋‹ค
-- ํ’€ ์Šค์บ” + ํ•จ์ˆ˜ ์—ฐ์‚ฐ์ด ๊ฒน์ณ CPU๋ฅผ ํฌ๊ฒŒ ์“ด๋‹ค
SELECT * FROM orders
WHERE TRUNC(created_at) = DATE '2026-06-18';
-- ๊ณ ์นœ ์˜ˆ: ํ•จ์ˆ˜ ์—†์ด ๋ฒ”์œ„ ์กฐ๊ฑด์œผ๋กœ ๋ฐ”๊พธ๋ฉด ์ธ๋ฑ์Šค๋ฅผ ํƒ„๋‹ค
SELECT order_id, member_id, total_amount, created_at
FROM orders
WHERE created_at >= DATE '2026-06-18'
  AND created_at <  DATE '2026-06-19';

์ง€๊ธˆ ๋ฌด์—‡์ด CPU๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”์ง€๋Š” ์‹คํ–‰ ์ค‘์ธ ์„ธ์…˜๋ถ€ํ„ฐ ๋ด…๋‹ˆ๋‹ค.

-- ์ง€๊ธˆ ํ™œ์„ฑ(ACTIVE) ์„ธ์…˜์ด ์–ด๋–ค SQL์„ ๋Œ๋ฆฌ๊ณ  ์žˆ๋Š”์ง€
SELECT s.sid, s.serial#, s.username, s.status,
       s.sql_id, q.sql_text
FROM   v$session s
LEFT JOIN v$sql q ON q.sql_id = s.sql_id
WHERE  s.status = 'ACTIVE'
  AND  s.type = 'USER'
ORDER  BY s.last_call_et DESC;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Physical Reads·Session Logical Reads๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์ธ๋ฑ์Šค๋ฅผ ๋ชป ํƒ€๋Š” ํ’€ ์Šค์บ”/๋ฌด๊ฑฐ์šด ์ฝ๊ธฐ ์ฟผ๋ฆฌ๊ฐ€ CPU๋ฅผ ๋จน๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Active Session์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์ฟผ๋ฆฌ๊ฐ€ ๋นจ๋ฆฌ ๋๋‚˜์ง€ ๋ชปํ•˜๊ณ  ์Œ“์ด๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. Parse Count (Hard)๊ฐ€ ๊ฐ™์ด ๋›ฐ๋ฉด → ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ๋ฏธ์‚ฌ์šฉ์œผ๋กœ ํŒŒ์‹ฑ์ด CPU๋ฅผ ๋จน๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฟผ๋ฆฌ ํšจ์œจ ๋ฌธ์ œ์™€ ๊ตฌ๋ถ„).

๊ฐœ๋ฐœ์ž ๊ด€์  — ์ •๋ ฌ·์ง‘๊ณ„·๋ฌธ์ž์—ด ๊ฐ€๊ณต์„ ์ „๋ถ€ DB ์ฟผ๋ฆฌ์— ๋ชฐ์•„๋„ฃ์œผ๋ฉด ๊ทธ ๊ณ„์‚ฐ ๋ถ€๋‹ด์ด ๊ทธ๋Œ€๋กœ CPU๋กœ ์˜ต๋‹ˆ๋‹ค. ๋˜ Oracle์—์„œ๋Š” ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ•๋Š” ์ฝ”๋“œ๊ฐ€ Hard parse๋ฅผ ์œ ๋ฐœํ•ด CPU๋ฅผ ๊ฐ‰์•„๋จน์Šต๋‹ˆ๋‹ค. ์ž์ฃผ ์“ฐ๋Š” ์ง‘๊ณ„๋Š” ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด ๋‘๊ณ , ์กฐํšŒ ์กฐ๊ฑด์€ ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋กœ ๋„˜๊ธฐ๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.

(OS) Memory Percent (%) / (OS) Memory Free (Bytes)

์šด์˜์ฒด์ œ ๊ด€์ ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ (%)๊ณผ ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ(Bytes)์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ์‚ฌ์šฉ๋ฅ  ํ‰๊ท  ์•ฝ 56.5%(๋ฒ”์œ„ 55.9 ~ 59.7%), ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ ์•ฝ 60GB๋กœ ํ‰ํƒ„ํ•˜๊ฒŒ ์œ ์ง€๋์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์€ ์ธ์Šคํ„ด์Šค ํฌ๊ธฐ์™€ SGA ์„ค์ •์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์„œ, ์–ด๋–ค ๊ณณ์€ 90%๋Œ€๋กœ ๋†’๊ฒŒ ์œ ์ง€๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ ˆ๋Œ€๊ฐ’๋ณด๋‹ค ์ถ”์„ธ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ๊ฒฝ๊ณ  90%, ์œ„ํ—˜ 95%. ๋‹ค๋งŒ ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊พธ์ค€ํžˆ ์ค„์–ด๋“œ๋Š” ์ถ”์„ธ๊ฐ€ ๋” ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐˆ๋˜๋ฉด OS๊ฐ€ ์Šค์™‘(๋””์Šคํฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์“ฐ๋Š” ๊ฒƒ)์„ ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ๋•Œ๋ถ€ํ„ฐ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ๋‚˜๋น ์ง‘๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์„ธ์…˜ ํญ์ฆ(์„ธ์…˜๋งˆ๋‹ค PGA ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์”€), ํฐ ์ •๋ ฌ·ํ•ด์‹œ ์กฐ์ธ์œผ๋กœ PGA ์‚ฌ์šฉ ์ฆ๊ฐ€, SGA ์„ค์ • ๊ณผ๋‹ค.

์Šค์™‘(swap)์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ชจ์ž๋ž„ ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ๋””์Šคํฌ์˜ ์ผ๋ถ€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ๋นŒ๋ ค ์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋น ๋ฅด๊ณ  ๋””์Šคํฌ๋Š” ํ›จ์”ฌ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ์Šค์™‘์ด ์‹œ์ž‘๋˜๋ฉด ๋ชจ๋“  ์ž‘์—…์ด ๊ฐ‘์ž๊ธฐ ๋А๋ ค์ง‘๋‹ˆ๋‹ค. Oracle์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์••๋ฐ•์€ ํฐ ์ •๋ ฌ·ํ•ด์‹œ ์ž‘์—…์ด PGA๋ฅผ ๋งŽ์ด ์“ธ ๋•Œ ์ž˜ ์ƒ๊น๋‹ˆ๋‹ค.

-- ์ •๋ ฌ/ํ•ด์‹œ ์ž‘์—…์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋๋‚˜์ง€ ๋ชปํ•˜๊ณ  ๋””์Šคํฌ(temp)๋กœ ๋„˜์–ด๊ฐ€๋Š”์ง€ ํ™•์ธ
-- 'workarea executions - multipass'๋‚˜ 'sorts (disk)'๊ฐ€ ๋Š˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์‹ ํ˜ธ
SELECT name, value
FROM   v$sysstat
WHERE  name IN ('sorts (memory)', 'sorts (disk)');
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Total Session์ด ๊ฐ™์ด ์šฐ์ƒํ–ฅํ•˜๋ฉด → ์„ธ์…˜ ๋ˆ„์ˆ˜๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ƒˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Physical Reads๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์ •๋ ฌ·ํ•ด์‹œ๊ฐ€ ๋””์Šคํฌ๋กœ ๋„˜์–ด๊ฐ€๋ฉฐ ๋””์Šคํฌ ์ฝ๊ธฐ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค„๋ฉฐ Read IOPS๊ฐ€ ์˜ค๋ฅด๋ฉด → ์Šค์™‘์ด ์‹œ์ž‘๋์„ ์ˆ˜ ์žˆ์–ด ์ฆ‰์‹œ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Oracle ๋ฉ”๋ชจ๋ฆฌ๋Š” ์„ธ์…˜๋งˆ๋‹ค PGA๋ฅผ ์กฐ๊ธˆ์”ฉ ์žก์•„๋จน๊ณ , ํฐ ์ •๋ ฌ·ํ•ด์‹œ ์กฐ์ธ์€ PGA๋ฅผ ํฌ๊ฒŒ ์”๋‹ˆ๋‹ค. ์„ธ์…˜์„ ๊ณผํ•˜๊ฒŒ ์—ด๊ฑฐ๋‚˜(์ปค๋„ฅ์…˜ ํ’€ ๊ณผ๋‹ค) ํ•œ ๋ฒˆ์— ๊ฑฐ๋Œ€ํ•œ ๊ฒฐ๊ณผ์…‹์„ ์ •๋ ฌ·๊ทธ๋ฃนํ•‘ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž์ฃผ ๋‚ ๋ฆฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์••๋ฐ•์ด ์ปค์ง‘๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋กœ ์ •๋ ฌ์„ ๋Œ€์‹ ํ•˜๊ฒŒ ํ•˜๊ณ  ๊ฒฐ๊ณผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋ฉด, ์ •๋ ฌ์ด ๋””์Šคํฌ(temp)๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์ด ๋Š˜ 56%๋กœ ํ‰ํƒ„ํ•˜๋ฉด ํ•œ๋ˆˆ์— ์ •์ƒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ฒœ์ฒœํžˆ ์ƒˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ธ์…˜์„ ๋‹ซ์ง€ ์•Š์œผ๋ฉด ์„ธ์…˜์ด ์Œ“์ด๋ฉฐ ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹œ๊ฐ„๋‹น ์ผ์ •ํ•˜๊ฒŒ ์ค„์–ด๋“œ๋Š” ์šฐํ•˜ํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. ์–ด๋А ์ˆœ๊ฐ„ ์Šค์™‘์ด ์‹œ์ž‘๋˜๋ฉด ๋ชจ๋“  ์ฟผ๋ฆฌ๊ฐ€ ๋А๋ ค์ง€๋ฏ€๋กœ, ์ถ”์„ธ๊ฐ€ ๊บพ์ด๊ธฐ ์ „์— ์žก๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

(OS) Disk Percent (%)

์„œ๋ฒ„ ๋””์Šคํฌ ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ๋ถ™์€ ๋””์Šคํฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฐผ๋Š”์ง€๋ฅผ ๋ด…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 80%, ๋ฒ”์œ„ 79.4 ~ 80.5%๋กœ ๊ฑฐ์˜ ์ผ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ํ‰ํƒ„ํ•ด์„œ ํ•œ๋ˆˆ์— ์ •์ƒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ์ž„๊ณ„ํ‘œ์ƒ ์ ˆ๋Œ€ ์ž„๊ณ„๋Š” ๋น„ํ™œ์„ฑ์ด์ง€๋งŒ, ๋””์Šคํฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด(ํŠนํžˆ ๋ฐ์ดํ„ฐ·๋กœ๊ทธ ์˜์—ญ) ์“ฐ๊ธฐ ์ž์ฒด๊ฐ€ ๋ฉˆ์ถฐ ์žฅ์• ๋กœ ์ง๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊พธ์ค€ํžˆ ์šฐ์ƒํ–ฅํ•˜๋Š” ์ถ”์„ธ๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋กœ๊ทธ·์•„์นด์ด๋ธŒ Redo ๋กœ๊ทธ๊ฐ€ ์ •๋ฆฌ๋˜์ง€ ์•Š๊ณ  ์Œ“์ž„, ๋Œ€๋Ÿ‰ ์ ์žฌ๋กœ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์ปค์ง, temp ์˜์—ญ์„ ํฌ๊ฒŒ ์“ฐ๋Š” ์ •๋ ฌ ์ž‘์—….
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Free Storage Space(์—ฌ์œ  ์šฉ๋Ÿ‰)์™€ ์ง์œผ๋กœ ๋ด…๋‹ˆ๋‹ค — ๋””์Šคํฌ ์‚ฌ์šฉ๋ฅ ์ด ์˜ค๋ฅด๋ฉด ์—ฌ์œ  ์šฉ๋Ÿ‰์€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. Redo Entries·Undo Change Vector Size๊ฐ€ ํ•จ๊ป˜ ํฌ๋ฉด → ๋ณ€๊ฒฝ๋Ÿ‰์ด ๋งŽ์•„ ๋กœ๊ทธ·undo๊ฐ€ ๋””์Šคํฌ๋ฅผ ๋จน๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๋””์Šคํฌ๋Š” ํ•œ ๋ฒˆ ์ฐจ๋ฉด ๋ณต๊ตฌ๊ฐ€ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰ ์ ์žฌ·์‚ญ์ œ ๋ฐฐ์น˜๋Š” ํ•œ ๋ฒˆ์— ๋ชฐ์•„ ํ•˜์ง€ ๋ง๊ณ  ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , ํฐ ์ •๋ ฌ์„ ์œ ๋ฐœํ•˜๋Š” ์ฟผ๋ฆฌ(์ธ๋ฑ์Šค ์—†๋Š” ORDER BY)๋Š” temp ์˜์—ญ์„ ํฌ๊ฒŒ ์“ฐ๋ฏ€๋กœ ์ธ๋ฑ์Šค๋กœ ์ •๋ ฌ์„ ๋Œ€์‹ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


2. ์„ธ์…˜ · ์—ฐ๊ฒฐ

์ฒด๊ฐ์ƒ ๊ฐ€์žฅ ์ž์ฃผ ๋ณด๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ "์—ฐ๊ฒฐ" ๊ณผ "ํ™œ์„ฑ" ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์นดํŽ˜๋กœ ์น˜๋ฉด ๋งค์žฅ ์•ˆ ์†๋‹˜ ์ „์ฒด๊ฐ€ ์—ฐ๊ฒฐ(Total Session)์ด๊ณ , ๊ทธ์ค‘ ์ง€๊ธˆ ๊ณ„์‚ฐ๋Œ€์—์„œ ์ฃผ๋ฌธ ์ค‘์ธ ์†๋‹˜์ด ํ™œ์„ฑ(Active Session)์ž…๋‹ˆ๋‹ค. ๋งค์žฅ์— ์†๋‹˜์ด ๋งŽ์•„๋„ ๊ณ„์‚ฐ๋Œ€ ์•ž์€ ๋ณดํ†ต ํ•œ๋‘ ๋ช…์ธ ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

์ด ์˜์—ญ์˜ ์šฉ์–ด ๋ช‡ ๊ฐœ๋ฅผ ๋จผ์ € ํ’€์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์„ธ์…˜(Session): ์‚ฌ์šฉ์ž๊ฐ€ Oracle์— ์ ‘์†ํ•ด ์ž‘์—…ํ•˜๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด "์ง€๊ธˆ ๋ถ™์–ด ์žˆ๋Š” DB ์—ฐ๊ฒฐ ํ•œ ๊ฐœ" ์ž…๋‹ˆ๋‹ค. ์„ธ์…˜์ด 3,000๊ฐœ๋ฉด ๊ทธ๋งŒํผ์ด ์ ‘์†ํ•ด ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ๊ทธ์ค‘ ์‹ค์ œ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋Œ๋ฆฌ๋Š” ์„ธ์…˜๋งŒ "ํ™œ์„ฑ(ACTIVE)" ์ž…๋‹ˆ๋‹ค.
  • ์ปค๋„ฅ์…˜ ํ’€(Connection Pool): ์—ฐ๊ฒฐ์„ ๋งค๋ฒˆ ์ƒˆ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค ๋Š๋Š” ๊ฒƒ์€ ๋น„์šฉ์ด ํฝ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—ฐ๊ฒฐ์„ ๋ฏธ๋ฆฌ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด ๋‘๊ณ , ํ•„์š”ํ•  ๋•Œ ๋นŒ๋ ค ์“ฐ๊ณ  ๋๋‚˜๋ฉด ๋ฐ˜๋‚ฉํ•˜๋Š” ๋ฐฉ์‹์„ ์”๋‹ˆ๋‹ค. ๊ณต๊ตฌ๋ฅผ ์“ธ ๋•Œ๋งˆ๋‹ค ์‚ฌ ์˜ค์ง€ ์•Š๊ณ  ๊ณต๊ตฌํ•จ์—์„œ ๊บผ๋‚ด ์“ฐ๊ณ  ๋‹ค์‹œ ๋„ฃ์–ด ๋‘๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋นŒ๋ฆฐ ์—ฐ๊ฒฐ์„ ๋ฐ˜๋‚ฉํ•˜์ง€ ์•Š์œผ๋ฉด "์„ธ์…˜ ๋ˆ„์ˆ˜" ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.
  • INACTIVE ์„ธ์…˜: ์—ฐ๊ฒฐ์€ ๋˜์–ด ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์•„๋ฌด ์ฟผ๋ฆฌ๋„ ๋Œ๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ผ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ปค๋„ฅ์…˜ ํ’€์ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘” ์„ธ์…˜๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ด INACTIVE ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์„ธ์…˜ ์ˆ˜๊ฐ€ ์ˆ˜์ฒœ ๊ฐœ์—ฌ๋„ ์‹ค์ œ๋กœ ์ผํ•˜๋Š” ๊ฒƒ์€ ๋ช‡ ๊ฐœ๋ฟ์ธ ๊ฒฝ์šฐ๊ฐ€ ์ •์ƒ์ž…๋‹ˆ๋‹ค.

Active Session (๊ฐœ)

์ง€๊ธˆ ์‹ค์ œ๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š”(ACTIVE ์ƒํƒœ์ธ) ์„ธ์…˜ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ถ€ํ•˜๋ฅผ ๊ฐ€์žฅ ์ž˜ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 1.0, ๋ฒ”์œ„ 0 ~ 11. ๋’ค์— ๋‚˜์˜ค๋Š” Total Session์ด ์•ฝ 3,700์ธ๋ฐ ํ™œ์„ฑ์€ 1 ์•ˆํŒŽ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๋Œ€๋ถ€๋ถ„์˜ ์„ธ์…˜์€ ๋†€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๊ณ , ์ด๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ๊ฒฝ๊ณ  50, ์œ„ํ—˜ 100. ํ™œ์„ฑ์ด ๊ฐ‘์ž๊ธฐ ์ˆ˜์‹ญ ๊ฐœ๋กœ ๋›ฐ๋ฉด ์ฟผ๋ฆฌ๋“ค์ด ๋นจ๋ฆฌ ๋๋‚˜์ง€ ๋ชปํ•˜๊ณ  ์Œ“์ด๊ณ  ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ์ฝ๋Š” ๋ฒ•: "์—ฐ๊ฒฐ(Total Session)์€ ๊ทธ๋Œ€๋กœ์ธ๋ฐ ํ™œ์„ฑ๋งŒ ๋›ฐ์—ˆ๋‹ค" ๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ๋А๋ ค์ง„ ๊ฒƒ์ด๊ณ , "์—ฐ๊ฒฐ๋„ ๊ฐ™์ด ๋›ฐ์—ˆ๋‹ค" ๋ฉด ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ตฌ๋ถ„์ด ์›์ธ ์ถ”์ ์˜ ์ถœ๋ฐœ์ ์ž…๋‹ˆ๋‹ค.

ํ™œ์„ฑ ์„ธ์…˜์ด ๊ฐ‘์ž๊ธฐ ์˜ค๋ฅด๋Š” ํ”ํ•œ ์›์ธ์€, ์–ด๋–ค ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๊ฐ€ ๋ฐฐํฌ๋˜์–ด ๊ทธ ์ฟผ๋ฆฌ๋ฅผ ๋Œ๋ฆฌ๋Š” ์„ธ์…˜๋“ค์ด ๋™์‹œ์— ์˜ค๋ž˜ ๋จธ๋ฌด๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

-- ์ง€๊ธˆ ACTIVE ์„ธ์…˜์„ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ์ˆœ์„œ๋กœ (last_call_et = ํ˜„์žฌ ์ž‘์—…์ด ์‹œ์ž‘๋œ ๋’ค ๊ฒฝ๊ณผ ์ดˆ)
SELECT sid, serial#, username, sql_id, event,
       last_call_et AS active_sec
FROM   v$session
WHERE  status = 'ACTIVE' AND type = 'USER'
ORDER  BY last_call_et DESC;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: CPU·Physical Reads๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋А๋ฆฐ(ํ’€ ์Šค์บ”) ์ฟผ๋ฆฌ๊ฐ€ ์•ˆ ๋๋‚˜๊ณ  ์Œ“์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Lock Session·enq: TX - Row Lock Contention์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋ฝ ๋Œ€๊ธฐ๋กœ ํ™œ์„ฑ์ด ๋ง‰ํ˜€ ์Œ“์ธ ๊ฒƒ(์ฟผ๋ฆฌ ์ž์ฒด๋ณด๋‹ค ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์›์ธ). Total Session์ด ๊ฐ™์ด ๋›ฐ๋ฉด → ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ํ™œ์„ฑ ์„ธ์…˜์€ ์ฟผ๋ฆฌ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ์‘๋‹ต ์†๋„์— ์ง์ ‘ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ๋А๋ฆฐ ์ฟผ๋ฆฌ ํ•œ ์ข…๋ฅ˜๊ฐ€ ๋ฐฐํฌ๋˜๋ฉด ๊ทธ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„ธ์…˜๋“ค์ด ๋™์‹œ์— ์˜ค๋ž˜ ๋จธ๋ฌผ๋Ÿฌ ํ™œ์„ฑ ์ˆ˜๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์„ ์งง๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ(์ธ๋ฑ์Šค·์ ์ • ๊ฒฐ๊ณผ ํฌ๊ธฐ·๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜)์ด ํ™œ์„ฑ ์ˆ˜๋ฅผ ๋‚ฎ๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ทผ๋ณธ ๋Œ€์ฑ…์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ํ‰์†Œ ํ™œ์„ฑ ์„ธ์…˜์ด 1~2์˜€๋Š”๋ฐ ์–ด๋А ๋ฐฐํฌ ์งํ›„ ๊ฐ‘์ž๊ธฐ 30~40์œผ๋กœ ์น˜์†Ÿ์•˜๋‹ค๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. v$session์œผ๋กœ ์žก์•„ ๋ณด๋‹ˆ ๊ฐ™์€ sql_id๋ฅผ ๊ฐ€์ง„ ์„ธ์…˜๋“ค์ด ์ˆ˜์‹ญ ๊ฐœ์”ฉ ๋™์‹œ์— ACTIVE๋กœ ๋–  ์žˆ๊ณ , ๊ทธ SQL์ด ์ธ๋ฑ์Šค๋ฅผ ๋ชป ํƒ€๋Š” ํ’€ ์Šค์บ”์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์š”์ฒญ์ด ๋А๋ ค์ง€์ž ๋’ค๋”ฐ๋ผ ๋“ค์–ด์˜จ ์š”์ฒญ๋“ค์ด ๋๋‚˜์ง€ ๋ชปํ•˜๊ณ  ์Œ“์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋‹ˆ ํ™œ์„ฑ ์„ธ์…˜์ด ๋‹ค์‹œ 1~2๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

Total Session (๊ฐœ)

์„ธ์…˜์˜ ์ƒํƒœ์™€ ์ƒ๊ด€์—†์ด ์ง€๊ธˆ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ „์ฒด ์„ธ์…˜ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์•„๋ฌด ์ผ๋„ ์•ˆ ํ•˜๋Š”(INACTIVE) ์„ธ์…˜๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 3,713, ๋ฒ”์œ„ 3,681 ~ 3,825. ์ปค๋„ฅ์…˜ ํ’€์ด ํฐ ํ™˜๊ฒฝ์ด๋ผ ์ˆ˜์ฒœ ๊ฐœ๊ฐ€ ์—ฐ๊ฒฐ๋œ ์ฑ„ ๊ฑฐ์˜ ํ‰ํ‰ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ์ˆ˜ ์ž์ฒด๋ณด๋‹ค "ํ‰์†Œ ์ˆ˜์ค€์—์„œ ๋ฒ—์–ด๋‚ฌ๋Š”๊ฐ€"๊ฐ€ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์„ธ์…˜ ๋ˆ„์ˆ˜(๋ฐ˜๋‚ฉ ์•ˆ ๋œ ์—ฐ๊ฒฐ), ํ’€ ์„ค์ • ๋ณ€๊ฒฝ, ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ.
-- ์ƒํƒœ๋ณ„·์‚ฌ์šฉ์ž๋ณ„ ์„ธ์…˜ ์ˆ˜ (INACTIVE๊ฐ€ ํ•œ์ชฝ์œผ๋กœ ์Œ“์ด๋ฉด ๋ˆ„์ˆ˜ ๋‹จ์„œ)
SELECT username, status, COUNT(*) AS cnt
FROM   v$session
WHERE  type = 'USER'
GROUP  BY username, status
ORDER  BY cnt DESC;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Active Session์€ ๊ทธ๋Œ€๋กœ์ธ๋ฐ Total๋งŒ ์šฐ์ƒํ–ฅํ•˜๋ฉด → ์ผ ์•ˆ ํ•˜๋Š” INACTIVE ์„ธ์…˜์ด ์Œ“์ด๋Š” ๋ˆ„์ˆ˜์ž…๋‹ˆ๋‹ค. (OS) Memory Free๊ฐ€ ๊ฐ™์ด ์ค„๋ฉด → ์„ธ์…˜๋งˆ๋‹ค ์“ฐ๋Š” PGA ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ˆ„์ ๋˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ํ•œ๋„(sessions/processes ํŒŒ๋ผ๋ฏธํ„ฐ)์— ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ์‹ ๊ทœ ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ์ปค๋„ฅ์…˜ ํ’€ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์žก๊ฑฐ๋‚˜, ์˜ˆ์™ธ ๊ฒฝ๋กœ์—์„œ ์—ฐ๊ฒฐ์„ ๋ฐ˜๋‚ฉํ•˜์ง€ ์•Š์œผ๋ฉด(try-with-resources๋‚˜ finally ๋ˆ„๋ฝ) ์„ธ์…˜์ด ๊ณ„์† ์Œ“์ž…๋‹ˆ๋‹ค. ํ’€ ํฌ๊ธฐ๋Š” DB์˜ sessions/processes ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ํ•จ๊ป˜ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ™์€ DB์— ๋ถ™๋Š”๋‹ค๋ฉด ํ’€ ํฌ๊ธฐ ํ•ฉ๊ณ„๊ฐ€ ํ•œ๋„๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Database Connections (๊ฐœ)

ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ˆ˜์˜ ํ‰๊ท ์ž…๋‹ˆ๋‹ค. (DPM์—์„œ๋Š” ๋‹จ์œ„๊ฐ€ credits๋กœ ํ‘œ๊ธฐ๋˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์—ฐ๊ฒฐ ์ˆ˜๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.)

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 3,655, ๋ฒ”์œ„ 3,527 ~ 3,767. Total Session(์•ฝ 3,713)๊ณผ ๋น„์Šทํ•œ ์ˆ˜์ค€์—์„œ ํ‰ํƒ„ํ•˜๊ฒŒ ์›€์ง์ž…๋‹ˆ๋‹ค. ๋‘ ์ง€ํ‘œ๋ฅผ ๊ฐ™์ด ๋ณด๋ฉด ์—ฐ๊ฒฐ ์ˆ˜์˜ ํฐ ๊ทธ๋ฆผ์„ ๊ต์ฐจ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: Total Session๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ธ์…˜ ๋ˆ„์ˆ˜, ํ’€ ์„ค์ • ๋ณ€๊ฒฝ, ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ.
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Total Session๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๋‘˜์ด ์–ด๊ธ‹๋‚˜๊ฑฐ๋‚˜ ํ•œ์ชฝ๋งŒ ํŠ€๋ฉด ์ธก์ • ๊ฒฝ๋กœ ์ฐจ์ด๋ฅผ ์˜์‹ฌํ•˜๊ณ , ๋‘˜ ๋‹ค ์šฐ์ƒํ–ฅํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ์‹ค์ œ๋กœ ๋ˆ„์ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ์—ฐ๊ฒฐ ์ˆ˜ ๊ณ„์—ด ์ง€ํ‘œ๋Š” ๊ฒฐ๊ตญ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—ฐ๊ฒฐ์„ ๋นŒ๋ฆฌ๊ณ  ์ œ๋•Œ ๋ฐ˜๋‚ฉํ•˜๋Š”์ง€์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์€ ๋นŒ๋ฆฌ๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฐ˜๋‚ฉ๋˜๋Š” ๊ตฌ์กฐ๋กœ ์“ฐ๊ณ , ํ’€ ํฌ๊ธฐ๋ฅผ DB ํ•œ๋„์— ๋งž์ถฐ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Lock Session (๊ฐœ)

์ง€๊ธˆ Row ๋ฝ์„ ์–ป์œผ๋ ค๊ณ  ๋Œ€๊ธฐ ์ค‘์ธ ์„ธ์…˜ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ฝ ๊ฒฝํ•ฉ์„ ์ง์ ‘ ๋ณด์—ฌ ์ฃผ๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. (๋ฝ ์ž์ฒด๋Š” ์•„๋ž˜ 5๋ฒˆ ๋ฝ ์„น์…˜์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃน๋‹ˆ๋‹ค.)

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 0.01, ๋ฒ”์œ„ 0 ~ 5. 0์ด ์ •์ƒ์ด๊ณ , 0์ด ์•„๋‹ˆ๋ฉด ์ง€๊ธˆ ๋ˆ„๊ตฐ๊ฐ€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ๋•Œ๋ฌธ์— ๋ง‰ํ˜€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ๊ฒฝ๊ณ  2, ์œ„ํ—˜ 3. ์ž‘์€ ๊ฐ’์ด๋ผ๋„ ๋ฐ˜๋ณต๋˜๋ฉด ํŠน์ • ์ฟผ๋ฆฌ·ํŠธ๋žœ์žญ์…˜์ด ์ž์ฃผ ์ถฉ๋Œํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ํ•œ ํŠธ๋žœ์žญ์…˜์ด ํ–‰์„ ์ฅ” ์ฑ„ ์ปค๋ฐ‹์„ ๋ฏธ๋ฃธ, ๊ฐ™์€ ํ–‰์— ๋Œ€ํ•œ ๋™์‹œ ์ˆ˜์ • ๊ฒฝํ•ฉ.
-- ๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ๋ฅผ ๋ง‰๊ณ  ์žˆ๋Š”์ง€ (blocking ์„ธ์…˜ ์ฐพ๊ธฐ)
SELECT s.sid, s.serial#, s.username,
       s.blocking_session, s.event, s.sql_id
FROM   v$session s
WHERE  s.blocking_session IS NOT NULL;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: enq: TX - Row Lock Contention(๋ฝ ๋Œ€๊ธฐ ์‹œ๊ฐ„)์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์‹ค์ œ๋กœ ๋ฝ ๊ฒฝํ•ฉ์ด ์ผ์–ด๋‚˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. Active Session์ด ๊ฐ™์ด ์Œ“์ด๋ฉด → ๋Œ€๊ธฐ๊ฐ€ ๋ถ€ํ•˜๋กœ ๋ฒˆ์ง€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋ถ„์„์€ 5๋ฒˆ ๋ฝ ์„น์…˜์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๋Œ€๊ธฐ ์„ธ์…˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€ ๋ฝ์„ ์˜ค๋ž˜ ์ฅ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฝ์„ ์žก์€ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹์„ ๋ฏธ๋ฃจ๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ, ๋ณ€๊ฒฝ ํ›„ ์ฆ‰์‹œ ์ปค๋ฐ‹ํ•˜๋„๋ก ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„๋ฅผ ์ขํžˆ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.


3. SQL ์ฒ˜๋ฆฌ๋Ÿ‰ · ํŒŒ์‹ฑ

์ด ์˜์—ญ์€ Oracle์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ SQL์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ํŒŒ์‹ฑ(์‹คํ–‰๊ณ„ํš ๋ถ„์„)์„ ์–ผ๋งˆ๋‚˜ ํ•˜๋Š”์ง€๋ฅผ ๋ด…๋‹ˆ๋‹ค. ๊ฐ€๊ฒŒ์˜ ํ’ˆ๋ชฉ๋ณ„ ํŒ๋งค ๊ฑด์ˆ˜ ๊ฐ™์€ ๊ฒƒ์ด๋ผ, ์ ˆ๋Œ€๊ฐ’๋ณด๋‹ค ํ‰์†Œ ๋Œ€๋น„ ํŒจํ„ด์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ์šฉ์–ด ๋‘ ๊ฐ€์ง€๋ฅผ ์งš์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ˆ„์ ๊ฐ’ ์นด์šดํ„ฐ: User Calls·User Commits·Redo Entries ๊ฐ™์€ ๊ฐ’ ์ค‘ ์ผ๋ถ€๋Š” Oracle์ด ์ผœ์ง„ ๋’ค๋กœ ๊ณ„์† ๋”ํ•ด ๊ฐ€๋Š” ๋ˆ„์  ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ ๋ˆ„์  ์ฃผํ–‰๊ฑฐ๋ฆฌ๊ณ„์ฒ˜๋Ÿผ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. "์ง€๊ธˆ 1๋ถ„์— ๋ช‡ ๋ฒˆ์ด์—ˆ๋‚˜"๋ฅผ ์•Œ๋ ค๋ฉด ๊ทธ ๊ฐ’ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์ด์ „ ์ธก์ •๊ฐ’๊ณผ์˜ ์ฐจ์ด๋ฅผ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (DPM์€ 1๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์ด๋Ÿฐ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.)
  • ํŒŒ์‹ฑ: ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ, SQL์ด ๋“ค์–ด์™”์„ ๋•Œ ์‹คํ–‰๊ณ„ํš์„ ์ฐพ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์บ์‹œ์— ์žˆ์œผ๋ฉด ๊ฐ€๋ณ๊ฒŒ ์žฌ์‚ฌ์šฉ(Soft parse), ์—†์œผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ถ„์„(Hard parse)ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์•ˆ ์“ฐ๋ฉด Hard parse๊ฐ€ ํญ์ฆํ•ฉ๋‹ˆ๋‹ค.

User Calls (๊ฑด)

Oracle ์™ธ๋ถ€(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ์‚ฌ์šฉ์ž ํ˜ธ์ถœ ๊ฑด์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์‹คํ–‰, ํŽ˜์น˜, ๋กœ๊ทธ์ธ ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ DB์— ๋ณด๋‚ธ ์š”์ฒญ์„ ์…‰๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 117,778, ๋ฒ”์œ„ 25,761 ~ 235,982. ํŠธ๋ž˜ํ”ฝ ์ˆ˜์ค€์„ ํ•œ ์ˆซ์ž๋กœ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ ์”๋‹ˆ๋‹ค. ํ‰์†Œ ๋Œ€๋น„ ๋ช‡ ๋ฐฐ๋กœ ๋›ฐ๋ฉด ํ˜ธ์ถœ๋Ÿ‰ ์ฆ๊ฐ€์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ, ํ•œ ์š”์ฒญ์ด DB ํ˜ธ์ถœ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์œ ๋ฐœํ•˜๋Š” ๋น„ํšจ์œจ(N+1 ํŒจํ„ด), ๋ถˆํ•„์š”ํ•œ ํด๋ง ๋กœ์ง.

User Calls๋ฅผ ๋น„์ •์ƒ์ ์œผ๋กœ ๋Š˜๋ฆฌ๋Š” ํ”ํ•œ ์›์ธ์€ "ํ•œ ๋ฒˆ์— ๋๋‚ผ ์ˆ˜ ์žˆ๋Š” ์กฐํšŒ๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœ"ํ•˜๋Š” N+1 ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก์„ ํ•œ ๋ฒˆ ๊ฐ€์ ธ์˜จ ๋’ค ๊ฐ ํ•ญ๋ชฉ๋งˆ๋‹ค ์ฟผ๋ฆฌ๋ฅผ ๋˜ ๋‚ ๋ฆฌ๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ์ฃผ๋ฌธ 100๊ฑด์„ ๊ฐ€์ ธ์˜จ ๋’ค, ๊ฐ ์ฃผ๋ฌธ๋งˆ๋‹ค ํšŒ์›์„ 1๋ฒˆ์”ฉ ๋” ์กฐํšŒ
-- (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ์•„๋ž˜ ์ฟผ๋ฆฌ๋ฅผ 100๋ฒˆ ๋” ํ˜ธ์ถœ → User Calls ์ฆ๊ฐ€)
SELECT * FROM orders WHERE status = 'PAID';
-- ์ดํ›„ ๋ฃจํ”„ ์•ˆ์—์„œ: SELECT * FROM members WHERE member_id = :id;  (100๋ฒˆ ๋ฐ˜๋ณต)
-- ๊ณ ์นœ ์˜ˆ: ์กฐ์ธ์œผ๋กœ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๋ฉด ํ˜ธ์ถœ ํšŸ์ˆ˜๊ฐ€ 1๋ฒˆ์œผ๋กœ ์ค€๋‹ค
SELECT o.order_id, o.total_amount, m.name
FROM   orders o
JOIN   members m ON m.member_id = o.member_id
WHERE  o.status = 'PAID';
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: TPS·Active Session์ด ํ•จ๊ป˜ ์˜ค๋ฅด๋ฉด → ์‹ค์ œ ๋ถ€ํ•˜ ์ฆ๊ฐ€์ž…๋‹ˆ๋‹ค. User Calls๋Š” ๋›ฐ๋Š”๋ฐ TPS(ํŠธ๋žœ์žญ์…˜ ์ˆ˜)๊ฐ€ ํ‰ํƒ„ํ•˜๋ฉด → ํ•œ ํŠธ๋žœ์žญ์…˜์ด ํ˜ธ์ถœ์„ ์ž˜๊ฒŒ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚˜๋ˆ  ๋‚ ๋ฆฌ๋Š” ๊ฒƒ(N+1)์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ํ•œ API ํ˜ธ์ถœ์ด DB ํ˜ธ์ถœ์„ ๋ช‡ ๋ฒˆ ์œ ๋ฐœํ•˜๋Š”์ง€๊ฐ€ ์ด ์ง€ํ‘œ๋ฅผ ์ขŒ์šฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋งค ๊ฑด๋งˆ๋‹ค ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด User Calls๊ฐ€ ํ˜ธ์ถœ๋Ÿ‰์— ๋น„๋ก€ํ•ด ํญ์ฆํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ธ·IN ์ ˆ๋กœ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๊ณ , ์ž˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œ๋ฅผ ๋‘๋ฉด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

TPS (๊ฑด/์ดˆ)

์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์‚ฐ์‹์€ (user commits + user rollbacks) / 5๋กœ, ์ปค๋ฐ‹·๋กค๋ฐฑ์œผ๋กœ ๋๋‚œ ํŠธ๋žœ์žญ์…˜์„ ์ดˆ๋‹น ๋‹จ์œ„๋กœ ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 25.6, ๋ฒ”์œ„ 0.2 ~ 535.4. ํ‰์†Œ์—” ๋‚ฎ๋‹ค๊ฐ€ ๋ฐฐ์น˜·ํŠธ๋ž˜ํ”ฝ ๋ชฐ๋ฆผ ์‹œ ์ˆ˜๋ฐฑ๊นŒ์ง€ ํŠ‘๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ ๋ฐฐ์น˜(์žฆ์€ ๋‹จ๊ฑด ์ปค๋ฐ‹), ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ.

์“ฐ๊ธฐ ์ชฝ TPS๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ๋†’์€ ํ”ํ•œ ์›์ธ์€ ํ•œ ๊ฑด์”ฉ ์ปค๋ฐ‹ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ํ•œ ๊ฑด์”ฉ 1,000๋ฒˆ INSERT + ๋งค ๊ฑด COMMIT (ํŠธ๋žœ์žญ์…˜ 1,000๊ฐœ)
-- TPS์™€ Log File Sync๊ฐ€ ํ•จ๊ป˜ ์น˜์†Ÿ๋Š”๋‹ค
BEGIN
  FOR i IN 1..1000 LOOP
    INSERT INTO logs(msg) VALUES ('row ' || i);
    COMMIT;            -- ๋งค ๊ฑด ์ปค๋ฐ‹ → ํŠธ๋žœ์žญ์…˜ ์ˆ˜·Redo flush ํญ์ฆ
  END LOOP;
END;
-- ๊ณ ์นœ ์˜ˆ: ์—ฌ๋Ÿฌ ๊ฑด์„ ๋ชจ์•„ ํ•œ ๋ฒˆ์— ์ปค๋ฐ‹ (ํŠธ๋žœ์žญ์…˜ ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ค€๋‹ค)
BEGIN
  FOR i IN 1..1000 LOOP
    INSERT INTO logs(msg) VALUES ('row ' || i);
  END LOOP;
  COMMIT;              -- ํ•œ ๋ฒˆ๋งŒ ์ปค๋ฐ‹
END;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: User Commits·Log File Sync๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์žฆ์€ ์ปค๋ฐ‹์ด Redo flush๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค(์•„๋ž˜ 4๋ฒˆ Redo ์„น์…˜). Active Session·CPU๊ฐ€ ๋™๋ฐ˜์ด๋ฉด → ์‹ค์ œ ๋ถ€ํ•˜ ์ฆ๊ฐ€์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — TPS๋Š” ์ปค๋ฐ‹·๋กค๋ฐฑ ํšŸ์ˆ˜์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค. ๋งค ๊ฑด๋งˆ๋‹ค ์ปค๋ฐ‹ํ•˜๋Š” ์ฝ”๋“œ๋Š” ํŠธ๋žœ์žญ์…˜ ์ˆ˜๋ฅผ ์ž˜๊ฒŒ ๋Š˜๋ฆฌ๊ณ  Log File Sync ๋ถ€๋‹ด์„ ํ‚ค์›๋‹ˆ๋‹ค. ํ•œ ๋ฌถ์Œ ๋‹จ์œ„๋กœ ์ปค๋ฐ‹ํ•˜๋ฉด TPS์™€ Redo flush ๋ถ€๋‹ด์ด ํ•จ๊ป˜ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

User Commits (๊ฑด) / User Rollbacks (๊ฑด)

์‚ฌ์šฉ์ž๊ฐ€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด Commit / Rollback์„ ์ˆ˜ํ–‰ํ•œ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: User Commits ํ‰๊ท  ์•ฝ 128 / 1 ~ 2,677, User Rollbacks ํ‰๊ท  ์•ฝ 0.6 / 0 ~ 22. ์ปค๋ฐ‹์ด ์••๋„์ ์œผ๋กœ ๋งŽ๊ณ  ๋กค๋ฐฑ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.
  • ์ฝ๋Š” ๋ฒ•: Rollback์ด ํ‰์†Œ๋ณด๋‹ค ๋Š˜๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์ž์ฃผ ์‹คํŒจํ•ด ๋˜๋Œ๋ ค์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋ฝ ๊ฒฝํ•ฉ·๊ต์ฐฉ(deadlock)·์ œ์•ฝ์กฐ๊ฑด ์œ„๋ฐ˜·์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์™ธ ๋“ฑ์„ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: Commit ๊ธ‰์ฆ → ๋Œ€๋Ÿ‰ ๋ฐฐ์น˜·์žฆ์€ ๋‹จ๊ฑด ์ปค๋ฐ‹. Rollback ๊ธ‰์ฆ → ํŠธ๋žœ์žญ์…˜ ์‹คํŒจ ์ฆ๊ฐ€(์—๋Ÿฌ·๊ต์ฐฉ).
-- ์ปค๋ฐ‹/๋กค๋ฐฑ ๋ˆ„์  ์นด์šดํ„ฐ ํ™•์ธ
SELECT name, value
FROM   v$sysstat
WHERE  name IN ('user commits', 'user rollbacks');
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: User Commits·TPS·Log File Sync๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฅด๋ฉด → ์ •์ƒ์ ์ธ ์“ฐ๊ธฐ ๋ถ€ํ•˜์ž…๋‹ˆ๋‹ค. User Rollbacks๊ฐ€ enq: TX - Row Lock Contention·Lock Session๊ณผ ํ•จ๊ป˜ ์˜ค๋ฅด๋ฉด → ๊ต์ฐฉ·๋ฝ ๊ฒฝํ•ฉ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์ด ๋˜๋Œ๋ ค์ง€๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๋กค๋ฐฑ์ด ์žฆ๋‹ค๋Š” ๊ฒƒ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์‹คํŒจ๋ฅผ ์ž์ฃผ ๋งŒ๋‚œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๊ต์ฐฉ(deadlock)์œผ๋กœ ์ธํ•œ ๋กค๋ฐฑ์ด๋ผ๋ฉด ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”·ํ–‰์„ ๊ฑด๋“œ๋ฆฌ๋Š” ์ˆœ์„œ๋ฅผ ์ฝ”๋“œ ์ „๋ฐ˜์—์„œ ์ผ์ •ํ•˜๊ฒŒ ๋งž์ถฐ ๊ต์ฐฉ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค. ์ œ์•ฝ์กฐ๊ฑด ์œ„๋ฐ˜์ด ์žฆ๋‹ค๋ฉด ์‚ฌ์ „ ๊ฒ€์ฆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

Parse Count (Hard) (๊ฑด)

์˜ค๋ผํด์ด ๋ฌธ์žฅ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ตœ์ ํ™”ํ•œ ํšŸ์ˆ˜, ์ฆ‰ Hard parse๊ฐ€ ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ Hard parse๋Š” ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด๋ผ, ์ด ๊ฐ’์ด ํฌ๋ฉด CPU์™€ Library Cache์— ๋ถ€๋‹ด์„ ์ค๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 0.07, ๋ฒ”์œ„ 0 ~ 360. ํ‰์†Œ์—” ๊ฑฐ์˜ 0์ธ๋ฐ(์‹คํ–‰๊ณ„ํš์ด ์ž˜ ์žฌ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป), ์–ด๋А ์ˆœ๊ฐ„ 360๊นŒ์ง€ ํŠ„ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆœ๊ฐ„์ด ๋ฐ”๋กœ ์œ„ํ—˜ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋งค๋ฒˆ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ•์€ SQL. Oracle์€ ์ด๋Ÿฐ SQL์„ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๋ฌธ์žฅ์œผ๋กœ ๋ณด๊ณ  ์‹คํ–‰๊ณ„ํš์„ ์ƒˆ๋กœ ์„ธ์›๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด Oracle ์„ฑ๋Šฅ ๋ฌธ์ œ์˜ ๋‹จ๊ณจ ์›์ธ์ด๋ผ, ์ฝ”๋“œ๋กœ ์ž์„ธํžˆ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ง์ ‘ ๋ฐ•๋Š”๋‹ค → ํšŒ์› ID๋งˆ๋‹ค SQL ํ…์ŠคํŠธ๊ฐ€ ๋‹ฌ๋ผ
-- Oracle์ด ๋งค๋ฒˆ ์ƒˆ ๋ฌธ์žฅ์œผ๋กœ ๋ณด๊ณ  Hard parse๋ฅผ ํ•œ๋‹ค (์บ์‹œ ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
SELECT * FROM members WHERE member_id = 1001;
SELECT * FROM members WHERE member_id = 1002;
SELECT * FROM members WHERE member_id = 1003;
-- ... ๊ฐ’๋งŒ ๋‹ค๋ฅธ ๊ฐ™์€ ๋ชจ์–‘ ์ฟผ๋ฆฌ๊ฐ€ ์ˆ˜์ฒœ ๊ฐœ ์ƒ๊ธฐ๋ฉฐ Hard parse ํญ์ฆ
-- ๊ณ ์นœ ์˜ˆ: ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์“ด๋‹ค → SQL ํ…์ŠคํŠธ๊ฐ€ ํ•ญ์ƒ ๋™์ผ
-- ์ฒซ ์‹คํ–‰ ๋•Œ๋งŒ ๋ถ„์„ํ•˜๊ณ , ์ดํ›„์—” Library Cache์˜ ์‹คํ–‰๊ณ„ํš์„ ์žฌ์‚ฌ์šฉ(Soft parse)
SELECT * FROM members WHERE member_id = :member_id;
-- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ :member_id ์ž๋ฆฌ์— ๊ฐ’๋งŒ ๋ฐ”๊ฟ” ๋„˜๊ธด๋‹ค

Java/JDBC์—์„œ๋Š” Statement์— ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ด์–ด ๋ถ™์ด์ง€ ๋ง๊ณ  PreparedStatement์— ?(๋ฐ”์ธ๋“œ)๋ฅผ ์“ฐ๋ฉด ๊ฐ™์€ ํšจ๊ณผ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Hard parse๋ฅผ ๋ง‰์„ ๋ฟ ์•„๋‹ˆ๋ผ SQL ์ธ์ ์…˜๋„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

-- Hard parse๋ฅผ ๋งŽ์ด ์œ ๋ฐœํ•˜๋Š” SQL ํ›„๋ณด ์ฐพ๊ธฐ (์‹คํ–‰ ๋Œ€๋น„ ํŒŒ์‹ฑ์ด ์žฆ์€ ๊ฒƒ)
SELECT sql_id, parse_calls, executions, sql_text
FROM   v$sqlarea
WHERE  parse_calls > 0
ORDER  BY parse_calls DESC
FETCH FIRST 20 ROWS ONLY;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: CPU๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ํŒŒ์‹ฑ์ด CPU๋ฅผ ๋จน๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. Library Cache Lock์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์žฆ์€ Hard parse๋กœ Library Cache ๊ฒฝํ•ฉ์ด ์ƒ๊ธด ๊ฒƒ์ž…๋‹ˆ๋‹ค(์•„๋ž˜). v$sqlarea์—์„œ ๊ฐ’๋งŒ ๋‹ค๋ฅธ ๋น„์Šทํ•œ SQL์ด ์ˆ˜์ฒœ ๊ฐœ ๋ณด์ด๋ฉด → ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ๋ฏธ์‚ฌ์šฉ์ด ๊ฑฐ์˜ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Hard parse ํญ์ฆ์€ ๊ฑฐ์˜ ํ•ญ์ƒ ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์•ˆ ์“ฐ๋Š” ์ฝ”๋“œ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค. ORM์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์“ฐ์ง€๋งŒ, ์ง์ ‘ SQL์„ ๋ฌธ์ž์—ด๋กœ ์กฐ๋ฆฝํ•˜๋Š” ์ฝ”๋“œ๋‚˜ ๋™์  ์ฟผ๋ฆฌ์—์„œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ถ™์ด๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์กฐํšŒ ์กฐ๊ฑด ๊ฐ’์€ ํ•ญ์ƒ ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋กœ ๋„˜๊ธฐ๋Š” ๊ฒƒ์ด ์›์น™์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ํ†ต๊ณ„ ํ™”๋ฉด์ด ๋ฐฐํฌ๋œ ๋’ค CPU๊ฐ€ ํ‰์†Œ๋ณด๋‹ค ๋†’๊ฒŒ ๊น”๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. v$sqlarea๋ฅผ ๋ณด๋‹ˆ WHERE region = '์„œ์šธ', WHERE region = '๋ถ€์‚ฐ'์ฒ˜๋Ÿผ ๊ฐ’๋งŒ ๋‹ค๋ฅธ ๊ฑฐ์˜ ๋˜‘๊ฐ™์€ SQL์ด ์ˆ˜์ฒœ ์ข…๋ฅ˜ ์žกํ˜€ ์žˆ๊ณ , ๊ฐ๊ฐ ํ•œ๋‘ ๋ฒˆ์”ฉ๋งŒ ์‹คํ–‰๋์Šต๋‹ˆ๋‹ค. ๋™์  ์ฟผ๋ฆฌ์—์„œ ์ง€์—ญ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ•์€ ๊ฒƒ์ด ์›์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋กœ ๋ฐ”๊พธ์ž SQL์ด ํ•œ ์ข…๋ฅ˜๋กœ ํ•ฉ์ณ์ง€๋ฉฐ Hard parse์™€ CPU๊ฐ€ ํ•จ๊ป˜ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.

Library Cache Lock (์ดˆ)

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ์— ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ ์žฌํ•˜๋ ค๋Š” ์„ธ์…˜์ด LCO(Library Cache Object) ํ•ธ๋“ค์— ๋Œ€ํ•œ ๋ฝ์„ ์–ป๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ์—ฌ๋Ÿฌ ์„ธ์…˜์ด Library Cache์˜ ๊ฐ™์€ ์ž์›์„ ๋‘๊ณ  ๊ฒฝํ•ฉํ•˜๋ฉฐ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 0.00006์ดˆ, ๋ฒ”์œ„ 0 ~ 0.01์ดˆ. ์‚ฌ์‹ค์ƒ 0์— ๊ฐ€๊น๊ฒŒ ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์žฆ์€ Hard parse๋กœ Library Cache๊ฐ€ ์ž์ฃผ ๊ฐฑ์‹ ๋จ, DDL(ํ…Œ์ด๋ธ”·์ธ๋ฑ์Šค ๋ณ€๊ฒฝ)์ด ์šด์˜ ์ค‘ ์ž์ฃผ ์‹คํ–‰๋˜์–ด ๊ด€๋ จ SQL์˜ ์‹คํ–‰๊ณ„ํš์ด ๋ฌดํšจํ™”๋จ.
-- ์ง€๊ธˆ Library Cache ๊ด€๋ จ ์ด๋ฒคํŠธ๋ฅผ ๋Œ€๊ธฐ ์ค‘์ธ ์„ธ์…˜์ด ์žˆ๋Š”์ง€
SELECT sid, event, seconds_in_wait, sql_id
FROM   v$session
WHERE  event LIKE 'library cache%';
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Parse Count (Hard)๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ๋ฏธ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์žฆ์€ ํŒŒ์‹ฑ์ด Library Cache ๊ฒฝํ•ฉ์„ ์œ ๋ฐœํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šด์˜ ์ค‘ DDL์ด ๋Œ๋ฉด → ๊ด€๋ จ SQL์ด ๋ฌดํšจํ™”๋˜๋ฉฐ ์ผ์‹œ์ ์œผ๋กœ ์˜ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Library Cache Lock์€ ์žฆ์€ Hard parse๋‚˜ ์šด์˜ ์ค‘ DDL๊ณผ ํ•จ๊ป˜ ์˜ค๋ฆ…๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์จ์„œ ํŒŒ์‹ฑ์„ ์ค„์ด๊ณ , ํ…Œ์ด๋ธ”·์ธ๋ฑ์Šค ๋ณ€๊ฒฝ ๊ฐ™์€ DDL์€ ํŠธ๋ž˜ํ”ฝ์ด ์ ์€ ์‹œ๊ฐ„๋Œ€๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ๊ฒฝํ•ฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


4. Redo · Undo

์ด ์˜์—ญ์ด Oracle ์ง€ํ‘œ ์ค‘ ๊ฐ€์žฅ Oracle๋‹ค์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ํ’€์–ด ๋‘” Redo(๋ณ€๊ฒฝ ๋กœ๊ทธ)์™€ Undo(๋˜๋Œ๋ฆฌ๊ธฐ·์ฝ๊ธฐ ์ผ๊ด€์„ฑ) ๊ฐœ๋…์ด ์—ฌ๊ธฐ์„œ ์ง€ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ๋งˆ๋‹ค Oracle์€ "๋ฐ”๊พผ ๋‚ด์šฉ"์„ Redo์— ์ ๊ณ , "๋ฐ”๊พธ๊ธฐ ์ „ ๊ฐ’"์„ Undo์— ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT/UPDATE/DELETE)์ด ๋งŽ์„์ˆ˜๋ก ์ด ์˜์—ญ ์ง€ํ‘œ๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฆ…๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰ ์ ์žฌ ๋ฐฐ์น˜๋ฅผ ์žก์•„๋‚ด๋Š” ๋ฐ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์šฉ์–ด๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์งง๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด:

  • Redo: ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋จผ์ € ์ ์–ด ๋‘๋Š” ์žฅ๋ถ€. ์žฅ์•  ์‹œ ์ด ์žฅ๋ถ€๋กœ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. LGWR๋ผ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ Redo ๋กœ๊ทธ ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ๋””์Šคํฌ์˜ Redo ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • Undo: ๋ณ€๊ฒฝ ์ „ ๊ฐ’์„ ๋ณด๊ด€ํ•˜๋Š” ๊ณณ. ๋กค๋ฐฑ๊ณผ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ์— ์”๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹๊ณผ Log File Sync: ์‚ฌ์šฉ์ž๊ฐ€ COMMIT์„ ํ•˜๋ฉด, ๊ทธ ์‹œ์ ๊นŒ์ง€์˜ Redo๊ฐ€ ๋””์Šคํฌ์— ์•ˆ์ „ํ•˜๊ฒŒ ๊ธฐ๋ก๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ด "Redo๊ฐ€ ๋””์Šคํฌ์— ์จ์ง€๊ธธ ๊ธฐ๋‹ค๋ฆฌ๋Š”" ์‹œ๊ฐ„์ด Log File Sync์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ปค๋ฐ‹์„ ์ž์ฃผ ํ• ์ˆ˜๋ก Log File Sync๊ฐ€ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

Redo Entries (๊ฑด)

๋ฐœ์ƒํ•œ Redo Entry ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค Redo๊ฐ€ ์ƒ๊ธฐ๋ฏ€๋กœ, ๋Œ€๋Ÿ‰์˜ DML(INSERT/UPDATE/DELETE)์ด ๋ฐœ์ƒํ•  ๋•Œ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 2,772์ธ๋ฐ ๋ฒ”์œ„๊ฐ€ 25 ~ 1,407,527๋กœ ๊ทน๋‹จ์ ์œผ๋กœ ๋„“์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์—” ์ˆ˜์ฒœ ๊ฑด์ด๋‹ค๊ฐ€ ์–ด๋–ค ์ˆœ๊ฐ„ 140๋งŒ ๊ฑด์„ ๋„˜๊ฒผ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด "์ˆœ๊ฐ„ ํญ์ฆ"์ด ๋Œ€๋Ÿ‰ ์ ์žฌ ๋ฐฐ์น˜์˜ ์ง€๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ INSERT/UPDATE/DELETE ๋ฐฐ์น˜, ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ํ•œ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์ธ ๊ฑฐ๋Œ€ํ•œ ๋ณ€๊ฒฝ.

๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์„ ํ•œ ๋ฒˆ์— ๋ชฐ์•„ ํ•˜๋ฉด Redo๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ํญ์ฆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ์ˆ˜๋ฐฑ๋งŒ ํ–‰์„ ํ•œ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ํ†ต์งธ ๊ฐฑ์‹  → Redo๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ํญ์ฆ
UPDATE orders SET status = 'ARCHIVED'
WHERE created_at < DATE '2025-01-01';
COMMIT;
-- ๊ณ ์นœ ์˜ˆ: ๋ช‡ ๋งŒ ๊ฑด์”ฉ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌ (Redo ๋ฐœ์ƒ์„ ๋ถ„์‚ฐ, undo ๋ˆ„์ ๋„ ์™„ํ™”)
BEGIN
  LOOP
    UPDATE orders SET status = 'ARCHIVED'
    WHERE created_at < DATE '2025-01-01'
      AND status <> 'ARCHIVED'
      AND ROWNUM <= 50000;     -- ํ•œ ๋ฒˆ์— 5๋งŒ ๊ฑด์”ฉ
    EXIT WHEN SQL%ROWCOUNT = 0;
    COMMIT;                    -- ๋ฌถ์Œ๋งˆ๋‹ค ์ปค๋ฐ‹
  END LOOP;
END;
-- Redo ๋ฐœ์ƒ๋Ÿ‰ ๋ˆ„์  ์นด์šดํ„ฐ ํ™•์ธ
SELECT name, value
FROM   v$sysstat
WHERE  name IN ('redo entries', 'redo size');
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Undo Change Vector Size·DBWR Undo Block Writes๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋Œ€๋Ÿ‰ DML์ด ๋งž์Šต๋‹ˆ๋‹ค(๋ณ€๊ฒฝํ•˜๋ฉด Redo์™€ Undo๊ฐ€ ํ•จ๊ป˜ ๋ฐœ์ƒ). Log File Sync๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์žฆ์€ ์ปค๋ฐ‹๊นŒ์ง€ ๊ฒน์นœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Write IOPS·Write Throughput์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๊ทธ ๋ณ€๊ฒฝ์ด ๋””์Šคํฌ ์“ฐ๊ธฐ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์„ ํ•˜๋‚˜์˜ ํฐ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์œผ๋ฉด Redo์™€ Undo๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์Œ“์—ฌ ๋ถ€ํ•˜๊ฐ€ ์ง‘์ค‘๋ฉ๋‹ˆ๋‹ค. ๋ฐฐ์น˜๋Š” ๋ช‡ ๋งŒ ๊ฑด ๋‹จ์œ„๋กœ ๋‚˜๋ˆ  ์ปค๋ฐ‹ํ•˜๋ฉด Redo ๋ฐœ์ƒ์ด ๋ถ„์‚ฐ๋˜๊ณ  undo ๋ˆ„์ ๋„ ์™„ํ™”๋ฉ๋‹ˆ๋‹ค. ๋˜ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ํ–‰๊นŒ์ง€ ๊ฐฑ์‹  ๋Œ€์ƒ์— ๋„ฃ์ง€ ์•Š๋„๋ก(์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ํ–‰ ์ œ์™ธ) ์กฐ๊ฑด์„ ์ •ํ™•ํžˆ ๊ฑฐ๋Š” ๊ฒƒ๋„ Redo๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Undo Change Vector Size (Bytes)

Oracle์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ(DML)ํ•  ๋•Œ ์ƒ์„ฑํ•œ Undo(๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ) ์˜ ์ด ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋Ÿ‰์ด ๋งŽ์„์ˆ˜๋ก ์ปค์ง‘๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 354KB์ธ๋ฐ ๋ฒ”์œ„๊ฐ€ 1,252 Bytes ~ ์•ฝ 224MB๋กœ ๋งค์šฐ ๋„“์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์—” ์ž‘๋‹ค๊ฐ€ ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ ์‹œ ์ˆ˜๋ฐฑ MB๊นŒ์ง€ ํŠ‘๋‹ˆ๋‹ค. Redo Entries์™€ ๊ฐ™์€ ์‹œ๊ฐ์— ํ•จ๊ป˜ ์›€์ง์ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ UPDATE/DELETE(ํŠนํžˆ ํ•œ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์ธ ๊ฒƒ), ๊ธด ํŠธ๋žœ์žญ์…˜.
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Redo Entries์™€ ๊ฑฐ์˜ ์ง์œผ๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค(๋ณ€๊ฒฝํ•˜๋ฉด ๋‘˜ ๋‹ค ๋ฐœ์ƒ). DBWR Undo Block Writes๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → undo ๋ธ”๋ก์ด ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. Data Blocks Consistent Reads๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๊ทธ undo๋ฅผ ์ฝ์–ด ๊ณผ๊ฑฐ ์‹œ์ ์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์ฝ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Undo๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ๋งˆ๋‹ค ์ƒ๊ธฐ๋ฏ€๋กœ, ํ•œ ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ํ–‰์„ ๋ฐ”๊พธ๋Š” ํŠธ๋žœ์žญ์…˜์€ undo๋ฅผ ํฌ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธด ํŠธ๋žœ์žญ์…˜(์˜ค๋ž˜ ์—ด์–ด ๋‘” ์ฑ„ ์ปค๋ฐ‹ ์•ˆ ํ•จ)์€ ๊ทธ undo๋ฅผ ์˜ค๋ž˜ ์žก์•„ ๋‘์–ด ๋‹ค๋ฅธ ์ž‘์—…์˜ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ ๋น„์šฉ๊นŒ์ง€ ํ‚ค์›๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์€ ๋‚˜๋ˆ ์„œ ์ปค๋ฐ‹ํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜์€ ์งง๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Log File Sync (์ดˆ)

์‚ฌ์šฉ์ž ์„ธ์…˜์ด ์ปค๋ฐ‹/๋กค๋ฐฑํ•œ ๋’ค, Redo ์ •๋ณด๊ฐ€ LGWR์— ์˜ํ•ด ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด "์ปค๋ฐ‹์ด ๋””์Šคํฌ์— ์•ˆ์ „ํ•˜๊ฒŒ ์จ์ง€๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„" ์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 0.31์ดˆ, ๋ฒ”์œ„ 0 ~ 8.6์ดˆ. ํ‰์†Œ์—” ๋งค์šฐ ์งง๋‹ค๊ฐ€ ์–ด๋–ค ์ˆœ๊ฐ„ 8์ดˆ ๋„˜๊ฒŒ ๊ธฐ๋‹ค๋ฆฐ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆœ๊ฐ„์ด ์œ„ํ—˜ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์žฆ์€ ๋‹จ๊ฑด ์ปค๋ฐ‹(์ปค๋ฐ‹๋งˆ๋‹ค Redo flush๋ฅผ ๊ธฐ๋‹ค๋ฆผ), ๋””์Šคํฌ(๋กœ๊ทธ ํŒŒ์ผ) I/O ์„ฑ๋Šฅ ์ €ํ•˜, ํ•œ๊บผ๋ฒˆ์— ๋ชฐ๋ฆฐ ์ปค๋ฐ‹.

๊ฐ€์žฅ ํ”ํ•œ ์›์ธ์€ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋งค ๊ฑด ์ปค๋ฐ‹ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ๋งค ๊ฑด ์ปค๋ฐ‹ → ์ปค๋ฐ‹๋งˆ๋‹ค Redo๊ฐ€ ๋””์Šคํฌ์— ์จ์ง€๊ธธ ๊ธฐ๋‹ค๋ฆฐ๋‹ค
-- (Log File Sync ๋Œ€๊ธฐ๊ฐ€ ๊ฑด์ˆ˜๋งŒํผ ์Œ“์ธ๋‹ค)
BEGIN
  FOR r IN (SELECT id FROM staging) LOOP
    UPDATE target SET flag = 'Y' WHERE id = r.id;
    COMMIT;                 -- ๋งค ๊ฑด ์ปค๋ฐ‹ → Log File Sync ํญ์ฆ
  END LOOP;
END;
-- ๊ณ ์นœ ์˜ˆ: ๋ฌถ์Œ ๋‹จ์œ„๋กœ ์ปค๋ฐ‹ (Redo flush ๋Œ€๊ธฐ ํšŸ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ค€๋‹ค)
DECLARE
  n NUMBER := 0;
BEGIN
  FOR r IN (SELECT id FROM staging) LOOP
    UPDATE target SET flag = 'Y' WHERE id = r.id;
    n := n + 1;
    IF MOD(n, 5000) = 0 THEN COMMIT; END IF;   -- 5์ฒœ ๊ฑด๋งˆ๋‹ค ์ปค๋ฐ‹
  END LOOP;
  COMMIT;
END;
-- Log File Sync ๋Œ€๊ธฐ ํ˜„ํ™ฉ ํ™•์ธ
SELECT event, total_waits, time_waited, average_wait
FROM   v$system_event
WHERE  event = 'log file sync';
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: User Commits·TPS๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์žฆ์€ ์ปค๋ฐ‹์ด ์›์ธ์ž…๋‹ˆ๋‹ค. Write IOPS·Write Throughput์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉฐ Log File Sync๊ฐ€ ๊ธธ์–ด์ง€๋ฉด → ๋กœ๊ทธ ๋””์Šคํฌ I/O๊ฐ€ ๋ณ‘๋ชฉ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Redo Entries๊ฐ€ ๊ฐ™์ด ํฌ๋ฉด → ๋ณ€๊ฒฝ๋Ÿ‰ ์ž์ฒด๊ฐ€ ๋งŽ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Log File Sync๋Š” ์ปค๋ฐ‹ ํšŸ์ˆ˜์— ํฌ๊ฒŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋งค ๊ฑด ์ปค๋ฐ‹ํ•˜๋ฉด ์ปค๋ฐ‹๋งˆ๋‹ค Redo flush๋ฅผ ๊ธฐ๋‹ค๋ ค ๋ˆ„์  ๋Œ€๊ธฐ๊ฐ€ ์ปค์ง‘๋‹ˆ๋‹ค. ํ•œ ๋ฌถ์Œ ๋‹จ์œ„๋กœ ๋ชจ์•„์„œ ์ปค๋ฐ‹ํ•˜๋ฉด ๋Œ€๊ธฐ ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋‹จ, ๋„ˆ๋ฌด ํฌ๊ฒŒ ๋ฌถ์œผ๋ฉด undo๊ฐ€ ์ปค์ง€๋ฏ€๋กœ ์ ๋‹นํ•œ ๋‹จ์œ„(์ˆ˜์ฒœ~์ˆ˜๋งŒ ๊ฑด)๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ๊ท ํ˜•์ ์ž…๋‹ˆ๋‹ค.

Data Blocks Consistent Reads - Undo Records Applied (๊ฑด)

์ฝ๊ธฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Undo ๋ ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•ด ๊ณผ๊ฑฐ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์žฌ๊ตฌ์„ฑํ•œ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋ณ€๊ฒฝ ์ค‘์ธ ๋ธ”๋ก์„ ๋‹ค๋ฅธ ์„ธ์…˜์ด ์ฝ์„ ๋•Œ, ๋ณ€๊ฒฝ ์ „ ๋ชจ์Šต์„ ๋ณด์—ฌ ์ฃผ๋ ค๊ณ  undo๋ฅผ ์ ์šฉํ•œ ์ž‘์—…์„ ์…‰๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 30, ๋ฒ”์œ„ 0 ~ 24,680. ํ‰์†Œ์—” ์ž‘๋‹ค๊ฐ€ ๋ณ€๊ฒฝ์ด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋งŽ์ด ์ฝ์„ ๋•Œ ํŠ‘๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ๋ฐ์ดํ„ฐ(ํ•ซ ๋ธ”๋ก)๋ฅผ ์—ฌ๋Ÿฌ ์„ธ์…˜์ด ๋™์‹œ์— ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒฝํ•ฉ, ๊ธด ์ฟผ๋ฆฌ๊ฐ€ ๊ทธ ์‚ฌ์ด ๋ฐ”๋€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉฐ ๊ณผ๊ฑฐ ๋ฒ„์ „์„ ๋งŽ์ด ์žฌ๊ตฌ์„ฑ.
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Undo Change Vector Size๊ฐ€ ๊ฐ™์ด ํฌ๋ฉด → ๋ณ€๊ฒฝ์ด ๋งŽ์•„ undo๊ฐ€ ๋งŽ์ด ์Œ“์ด๊ณ  ๊ทธ๊ฒƒ์„ ์ฝ๋Š” ์ผ๋„ ๋Š˜์–ด๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Session Logical Reads๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ ์ค‘ ์ผ๊ด€์„ฑ ์žฌ๊ตฌ์„ฑ ๋น„์ค‘์ด ์ปค์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ์—์„œ ์ž์ฃผ ๋ฐ”๊พธ๊ณ  ๋‹ค๋ฅธ ์ชฝ์—์„œ ๊ธธ๊ฒŒ ์ฝ์œผ๋ฉด, ์ฝ๋Š” ์ชฝ์ด ๋ณ€๊ฒฝ ์ „ ๋ฒ„์ „์„ ์žฌ๊ตฌ์„ฑํ•˜๋А๋ผ ์ผ์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ํ•ซ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ธด ๋ถ„์„ ์ฟผ๋ฆฌ๋Š” ์‹œ๊ฐ„๋Œ€๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฑฐ๋‚˜, ์ฝ๊ธฐ ์ „์šฉ ๋ณต์ œ๋ณธ์—์„œ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

DBWR Undo Block Writes (๊ฑด)

DBWR(Database Writer) ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ Undo ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ๋””์Šคํฌ์— ๊ธฐ๋กํ•œ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. undo๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์–‘์„ ๋ด…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 50, ๋ฒ”์œ„ 0 ~ 20,445. ํ‰์†Œ์—” ์ž‘๋‹ค๊ฐ€ ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ ์‹œ ํ•จ๊ป˜ ํŠ‘๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ DML๋กœ undo๊ฐ€ ๋งŽ์ด ์ƒ์„ฑ๋˜์–ด ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ.
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Undo Change Vector Size·Redo Entries์™€ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค(๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์˜ ํ•œ ๋ฌถ์Œ). Write IOPS๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → undo ๋ธ”๋ก ์“ฐ๊ธฐ๊ฐ€ ๋””์Šคํฌ I/O๋กœ ์žกํžˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ์ด ์ง€ํ‘œ๋Š” ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์˜ ๊ฒฐ๊ณผ๋กœ ๋”ฐ๋ผ ์˜ค๋ฅด๋Š” ๊ฒƒ์ด๋ผ, ์ง์ ‘ ์ค„์ด๊ธฐ๋ณด๋‹ค ์›์ธ์ธ ๋Œ€๋Ÿ‰ DML์„ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž์—ฐํžˆ ์™„ํ™”๋ฉ๋‹ˆ๋‹ค. Redo·Undo ์˜์—ญ ์ง€ํ‘œ๋“ค์€ ๋Œ€์ฒด๋กœ "๋ณ€๊ฒฝ๋Ÿ‰"์ด๋ผ๋Š” ํ•œ ์›์ธ์—์„œ ํ•จ๊ป˜ ์›€์ง์ธ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.


5. ๋ฝ · ๋™์‹œ์„ฑ

๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋ฐ”๊พธ๋ ค ํ•  ๋•Œ ๋ฝ(Lock) ์œผ๋กœ ์ˆœ์„œ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ™”์žฅ์‹ค ํ•œ ์นธ์„ ํ•œ ์‚ฌ๋žŒ์”ฉ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์„œ, ํ•œ ์‚ฌ๋žŒ์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ์“ฐ๋ฉด ๋’ค์— ์ค„์ด ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค.

์ด ์˜์—ญ์˜ ๊ฐœ๋…์„ ๋จผ์ € ์งง๊ฒŒ ํ’€์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. (์•„๋ž˜ ์ง€ํ‘œ๋Š” ์ด ๊ฐœ๋…๋“ค์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.)

  • ํŠธ๋žœ์žญ์…˜(Transaction): ์—ฌ๋Ÿฌ DB ์ž‘์—…์„ "์ „๋ถ€ ์„ฑ๊ณต ์•„๋‹ˆ๋ฉด ์ „๋ถ€ ์ทจ์†Œ" ๋กœ ๋ฌถ์€ ํ•œ ๋ฌถ์Œ์ž…๋‹ˆ๋‹ค. ๊ณ„์ขŒ ์ด์ฒด์—์„œ "๋‚ด ๊ณ„์ขŒ์—์„œ 1๋งŒ ์› ๋นผ๊ธฐ" ์™€ "์นœ๊ตฌ ๊ณ„์ขŒ์— 1๋งŒ ์› ๋„ฃ๊ธฐ" ๋Š” ๋‘˜ ๋‹ค ๋˜๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค ์•ˆ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค ์ž˜ ๋์œผ๋ฉด COMMIT, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ROLLBACK ํ•ฉ๋‹ˆ๋‹ค.
  • TX ๋ฝ(ํ–‰ ๋ฝ): Oracle์—์„œ ์–ด๋–ค ํ–‰์„ ๊ณ ์น˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด, ์ปค๋ฐ‹ํ•  ๋•Œ๊นŒ์ง€ ๊ทธ ํ–‰์— ๋ฝ(TX ๋ฝ)์„ ๊ฑธ์–ด ๋‘ก๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์„ธ์…˜์ด ๊ฐ™์€ ํ–‰์„ ๊ณ ์น˜๋ ค๋ฉด ๊ทธ ๋ฝ์ด ํ’€๋ฆด ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. Oracle์€ ํ…Œ์ด๋ธ” ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณ ์น˜๋Š” ๊ทธ ํ–‰๋งŒ ์ž ๊ทธ๋ฏ€๋กœ, ๊ฐ™์€ ํ…Œ์ด๋ธ”์ด๋ผ๋„ ๋‹ค๋ฅธ ํ–‰์€ ๋™์‹œ์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ฌด์—‡์ด ๋ฌธ์ œ๋ƒ๋ฉด: ์ž ๊ทผ ์„ธ์…˜์ด ๋นจ๋ฆฌ ์ปค๋ฐ‹ํ•˜๋ฉด ๋ฝ์ด ๊ธˆ๋ฐฉ ํ’€๋ ค ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ž ๊ฐ€ ๋†“๊ณ  ์˜ค๋ž˜ ์•ˆ ํ’€์–ด์ค„ ๋•Œ(์˜ˆ: ํŠธ๋žœ์žญ์…˜์„ ์—ฐ ์ฑ„ ์™ธ๋ถ€ API ํ˜ธ์ถœ์„ ๊ธฐ๋‹ค๋ฆผ)์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๊ทธ ํ–‰์„ ๊ณ ์น˜๋ ค๋Š” ๋‹ค๋ฅธ ์ž‘์—…๋“ค์ด ์ค„์ค„์ด ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ง€ํ‘œ๊ฐ€ ๋ฐ”๋กœ ์ด "๊ธฐ๋‹ค๋ฆผ" ์„ ๋ด…๋‹ˆ๋‹ค.

enq: TX - Row Lock Contention (์ดˆ)

Row ๋ ˆ๋ฒจ ๋ฝ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ํ–‰์— ๋Œ€ํ•œ TX ๋ฝ์„ ์–ป์œผ๋ ค๊ณ  ๊ธฐ๋‹ค๋ฆฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. (enq:๋Š” enqueue, ์ฆ‰ ๋ฝ ๋Œ€๊ธฐ ํ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.) ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์žก์€ ํ–‰ ๋ฝ์ด ํ’€๋ฆฌ๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 0.0018์ดˆ, ๋ฒ”์œ„ 0 ~ 30์ดˆ. ํ‰์†Œ 0์— ๊ฐ€๊น๊ณ , ๊ฐ€๋” ์ˆœ๊ฐ„์ ์œผ๋กœ ์ตœ๋Œ€ 30์ดˆ๊นŒ์ง€ ๋Œ€๊ธฐ๊ฐ€ ๋ชฐ๋ฆฐ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 30์ดˆ์”ฉ ๋ฝ์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€ ํ–‰์„ ์˜ค๋ž˜ ์ฅ๊ณ  ์•ˆ ๋†จ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์žฅ๊ธฐ ์‹คํ–‰ ํŠธ๋žœ์žญ์…˜์ด ํ–‰ ๋ฝ์„ ์˜ค๋ž˜ ์ฅ , ๊ฐ™์€ ํ–‰์„ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ˆ˜์ •, ์ปค๋ฐ‹์„ ๋Šฆ๊ฒŒ ํ•˜๋Š” ์ฝ”๋“œ.

๋ฝ ๋Œ€๊ธฐ๋Š” ๊ฑฐ์˜ "ํŠธ๋žœ์žญ์…˜์„ ์—ด์–ด๋†“๊ณ  ์ปค๋ฐ‹์„ ๋ฏธ๋ฃจ๋Š”" ์ฝ”๋“œ์—์„œ ์ƒ๊น๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ํ–‰์„ ์ˆ˜์ •ํ•œ ๋’ค ์™ธ๋ถ€ ์ž‘์—…(API ํ˜ธ์ถœ·ํŒŒ์ผ ์ฒ˜๋ฆฌ ๋“ฑ)์„ ํ•˜๋А๋ผ ์ปค๋ฐ‹์ด ๋Šฆ์–ด์ง„๋‹ค
-- ๊ทธ๋™์•ˆ ๊ฐ™์€ ํ–‰(id=1)์„ ๊ฑด๋“œ๋ฆฌ๋ ค๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ์ „๋ถ€ ๋Œ€๊ธฐํ•œ๋‹ค
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
-- ... ์—ฌ๊ธฐ์„œ ์™ธ๋ถ€ API ํ˜ธ์ถœ ๋“ฑ์œผ๋กœ ์ˆ˜ ์ดˆ~์ˆ˜์‹ญ ์ดˆ ์ง€์—ฐ ...
COMMIT;   -- ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ์ปค๋ฐ‹ → ๊ทธ ์‚ฌ์ด account_id=1์„ ๋…ธ๋ฆฌ๋Š” ์ž‘์—…๋“ค์ด TX ๋ฝ ๋Œ€๊ธฐ
-- ๊ณ ์นœ ์˜ˆ: DB ๋ณ€๊ฒฝ ๊ตฌ๊ฐ„๋งŒ ๋น ๋ฅด๊ฒŒ ๋ฌถ์–ด ๊ณง๋ฐ”๋กœ ์ปค๋ฐ‹ํ•œ๋‹ค (์™ธ๋ถ€ ์ž‘์—…์€ ํŠธ๋žœ์žญ์…˜ ๋ฐ–์—์„œ)
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
COMMIT;   -- ์ฆ‰์‹œ ์ปค๋ฐ‹ → ๋ฝ ์ ์œ  ์‹œ๊ฐ„์ด ์งง์•„ ๋Œ€๊ธฐ๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค
-- ์ง€๊ธˆ ๋ฝ ๊ฒฝํ•ฉ์ด ์žˆ๋Š”์ง€ — ๋ง‰์€ ์„ธ์…˜(holder)๊ณผ ๋ง‰ํžŒ ์„ธ์…˜(waiter) ์ฐพ๊ธฐ
SELECT w.sid AS waiter_sid, h.sid AS holder_sid,
       w.sql_id AS waiter_sql, h.username AS holder_user
FROM   v$session w
JOIN   v$session h ON h.sid = w.blocking_session
WHERE  w.blocking_session IS NOT NULL;
-- ์ง„ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜์„ ์˜ค๋ž˜๋œ ์ˆœ์œผ๋กœ (์˜ค๋ž˜๋œ ๊ฒƒ์ด ๋ธ”๋กœ์ปค์ผ ๊ฐ€๋Šฅ์„ฑ)
SELECT t.start_time, s.sid, s.serial#, s.username, s.sql_id
FROM   v$transaction t
JOIN   v$session s ON s.saddr = t.ses_addr
ORDER  BY t.start_time;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Lock Session(๋Œ€๊ธฐ ์ค‘์ธ ์„ธ์…˜ ์ˆ˜)์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ์ง€๊ธˆ ์‹ค์ œ๋กœ ๋ง‰ํ˜€ ์žˆ๋Š” ์„ธ์…˜์ด ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. Active Session·CPU๊ฐ€ ๋™๋ฐ˜์ด๋ฉด → ๋Œ€๊ธฐ ์„ธ์…˜์ด ์Œ“์ด๋ฉฐ ๋ถ€ํ•˜๋กœ ๋ฒˆ์ง€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. User Rollbacks๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๊ต์ฐฉ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์ด ๋˜๋Œ๋ ค์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ํŠธ๋žœ์žญ์…˜ ๋ฒ”์œ„ ์•ˆ์— ์™ธ๋ถ€ API ํ˜ธ์ถœ์ด๋‚˜ ๊ธด ๋กœ์ง์„ ๋„ฃ์œผ๋ฉด ๊ทธ๋™์•ˆ ํ–‰ ๋ฝ์„ ์ฅ๊ณ  ์žˆ์–ด ๊ฐ™์€ ํ–‰์„ ๊ฑด๋“œ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์š”์ฒญ์ด ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ์งง๊ฒŒ ๊ฐ€์ ธ๊ฐ€๊ณ , ์™ธ๋ถ€ ํ˜ธ์ถœ์ด๋‚˜ ๋ฌด๊ฑฐ์šด ์ฒ˜๋ฆฌ๋Š” ํŠธ๋žœ์žญ์…˜ ๋ฐ–์œผ๋กœ ๋นผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ํ–‰์„ ์ž์ฃผ ๊ฐฑ์‹ ํ•˜๋Š” ์„ค๊ณ„ ์ž์ฒด๋„ ๊ฒฝํ•ฉ์„ ๋Š˜๋ฆฌ๋Š” ์›์ธ์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์–ด๋–ค ํ–‰์„ ์ˆ˜์ •ํ•œ ๋’ค ์ปค๋ฐ‹ํ•˜์ง€ ์•Š๊ณ  ์™ธ๋ถ€ ๊ฒฐ์ œ API ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‘๋‹ต์ด ๋Šฆ์–ด์ง€๋Š” ๋™์•ˆ ๊ฐ™์€ ํ–‰(์˜ˆ: ๊ฐ™์€ ์ƒํ’ˆ ์žฌ๊ณ )์„ ์ˆ˜์ •ํ•˜๋ ค๋Š” ์š”์ฒญ๋“ค์ด ์ค„์ค„์ด ๋Œ€๊ธฐํ•˜๋ฉด์„œ enq: TX - Row Lock Contention ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ Lock Session์ด ํ•จ๊ป˜ ์˜ค๋ฅด๊ณ , ๋Œ€๊ธฐํ•˜๋Š” ๋งŒํผ ํ™œ์„ฑ ์„ธ์…˜์ด ์Œ“์—ฌ CPU์™€ ์‘๋‹ต์‹œ๊ฐ„๊นŒ์ง€ ๋™๋ฐ˜ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค. ์œ„ v$transaction์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํŠธ๋žœ์žญ์…˜์„ ์ฐพ์•„ ์ •๋ฆฌํ•˜๋ฉด ํ•œ๊บผ๋ฒˆ์— ํ’€๋ฆฝ๋‹ˆ๋‹ค. ๊ทผ๋ณธ ํ•ด๊ฒฐ์€ ์™ธ๋ถ€ ํ˜ธ์ถœ์„ ํŠธ๋žœ์žญ์…˜ ๋ฐ–์œผ๋กœ ๋นผ๊ณ  ์ปค๋ฐ‹์„ ๋ฏธ๋ฃจ์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


6. I/O · ์ฝ๊ธฐ

๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ์ž‘์—…์€ ๊ฒฐ๊ตญ ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค. Oracle์—์„œ ์ฝ๊ธฐ๋Š” ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ(๋ฒ„ํผ ์บ์‹œ)์—์„œ ์ฝ๋Š” ๋…ผ๋ฆฌ ์ฝ๊ธฐ(Session Logical Reads) ์™€, ์บ์‹œ์— ์—†์–ด ๋””์Šคํฌ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€ ์ฝ๋Š” ๋ฌผ๋ฆฌ ์ฝ๊ธฐ(Physical Reads) ์ž…๋‹ˆ๋‹ค. ์ฑ…์ƒ(๋ฉ”๋ชจ๋ฆฌ)์—์„œ ๋ฐ”๋กœ ์ฐพ์œผ๋ฉด ๋น ๋ฅด๊ณ , ์„œ๊ฐ€(๋””์Šคํฌ)๊นŒ์ง€ ๊ฐ€์•ผ ํ•˜๋ฉด ๋А๋ฆฝ๋‹ˆ๋‹ค.

์ด ์˜์—ญ์—๋Š” ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ๊ฐœ๋…์ด ๋‚˜์˜ค๋ฏ€๋กœ ๋จผ์ € ๊ตฌ๋ถ„ํ•ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ธ”๋ก(block): Oracle์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ตœ์†Œ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ํ–‰ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ํ–‰์ด ๋‹ด๊ธด ๋ธ”๋ก ๋‹จ์œ„๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. Physical Reads·Session Logical Reads๋Š” ์ด ๋ธ”๋ก ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.
  • IOPS(์ดˆ๋‹น ์ž…์ถœ๋ ฅ ํšŸ์ˆ˜): 1์ดˆ์— ๋””์Šคํฌ๋ฅผ ๋ช‡ ๋ฒˆ ์ฝ๊ฑฐ๋‚˜ ์ผ๋Š”์ง€, ๊ทธ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. "์„œ๊ฐ€๋ฅผ 1์ดˆ์— ๋ช‡ ๋ฒˆ ๋‹ค๋…€์™”๋‚˜" ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰): 1์ดˆ์— ์‹ค์ œ๋กœ ๋ช‡ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์ผ๋Š”์ง€, ๊ทธ ์–‘์ž…๋‹ˆ๋‹ค. "1์ดˆ์— ์ง์„ ๋ช‡ kg ๋‚ ๋ž๋‚˜" ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํšŸ์ˆ˜(IOPS)๊ฐ€ ์ ์–ด๋„ ํ•œ ๋ฒˆ์— ํฐ ์ง์„ ๋‚˜๋ฅด๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Latency(์ง€์—ฐ ์‹œ๊ฐ„): ํ•œ ๋ฒˆ์˜ ์ž‘์—…์ด ๋๋‚˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋‹ค๋…€์˜ค๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‚˜๋ฅผ ๋ด…๋‹ˆ๋‹ค.

Physical Reads (block)

๋””์Šคํฌ์—์„œ ์ฝ์–ด ๋“ค์ธ ๋ธ”๋ก ์ˆ˜์ž…๋‹ˆ๋‹ค. ์บ์‹œ(๋ฒ„ํผ ์บ์‹œ)์— ์—†์–ด์„œ ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋””์Šคํฌ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€ ์ฝ์€ ๊ฒƒ์ด๋ผ, ์ด ๊ฐ’์ด ํฌ๋ฉด ๊ทธ๋งŒํผ ๋А๋ฆฝ๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 27,708 ๋ธ”๋ก, ๋ฒ”์œ„ 1,179 ~ 649,044. ํ‰์†Œ์—๋„ ์–ด๋А ์ •๋„ ์žˆ๊ณ , ์–ด๋–ค ์ˆœ๊ฐ„ 64๋งŒ ๋ธ”๋ก์„ ๋„˜๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด ์ˆœ๊ฐ„์ด ๋Œ€ํ˜• ํ’€ ์Šค์บ”์˜ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ์ธ๋ฑ์Šค๋ฅผ ๋ชป ํƒ€๊ณ  ํ’€ ์Šค์บ”ํ•˜๋Š” ์ฟผ๋ฆฌ, ๋ฒ„ํผ ์บ์‹œ์— ์—†๋Š” ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ‘์ž๊ธฐ ์กฐํšŒ, ๋ฒ„ํผ ์บ์‹œ ํฌ๊ธฐ ๋ถ€์กฑ.

๋ฌผ๋ฆฌ ์ฝ๊ธฐ๋ฅผ ํญ์ฆ์‹œํ‚ค๋Š” ๋Œ€ํ‘œ ์›์ธ์€ ์ธ๋ฑ์Šค๋ฅผ ๋ชป ํƒ€๋Š” ํ’€ ์Šค์บ”์ž…๋‹ˆ๋‹ค.

-- ๋‚˜์œ ์˜ˆ: ์ธ๋ฑ์Šค ์—†๋Š” ์ปฌ๋Ÿผ ์กฐ๊ฑด → ํฐ ํ…Œ์ด๋ธ”์„ ํ†ต์งธ๋กœ ๋””์Šคํฌ์—์„œ ์ฝ๋Š”๋‹ค
SELECT * FROM orders WHERE memo LIKE '%ํ™˜๋ถˆ%';
-- ๊ณ ์นœ ์˜ˆ: ์ธ๋ฑ์Šค ํƒ€๋Š” ์กฐ๊ฑด์œผ๋กœ ์ขํžˆ๊ณ  ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ ์ฝ๋Š”๋‹ค
SELECT order_id, member_id, total_amount
FROM   orders
WHERE  status = 'REFUNDED'              -- status์— ์ธ๋ฑ์Šค
  AND  created_at >= DATE '2026-06-01';
-- ๋ฌผ๋ฆฌ ์ฝ๊ธฐ๋ฅผ ๋งŽ์ด ํ•œ SQL ํ›„๋ณด ์ฐพ๊ธฐ
SELECT sql_id, disk_reads, executions, sql_text
FROM   v$sql
WHERE  executions > 0
ORDER  BY disk_reads DESC
FETCH FIRST 20 ROWS ONLY;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Session Logical Reads๋„ ๊ฐ™์ด ํฌ๋ฉด → ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ์€ ๋ธ”๋ก์„ ํ›‘๋Š” ํ’€ ์Šค์บ”์ž…๋‹ˆ๋‹ค. Read IOPS·Read Throughput·Latency๊ฐ€ ๋™๋ฐ˜ ์ƒ์Šน์ด๋ฉด → ๋””์Šคํฌ ์ฝ๊ธฐ๊ฐ€ ์‹ค์ œ๋กœ ๋Š˜์–ด ๋А๋ ค์ง€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. CPU๋„ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋ฌด๊ฑฐ์šด ์ฝ๊ธฐ ์ฟผ๋ฆฌ๊ฐ€ CPU๊นŒ์ง€ ๋จน๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Physical Reads(๋””์Šคํฌ ์ฝ๊ธฐ)๊ฐ€ ๋Š˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๊ฐ€ ์บ์‹œ์— ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ์š”์ฒญํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์กฐํšŒ ์กฐ๊ฑด·์กฐ์ธ ํ‚ค์— ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด ํ’€ ์Šค์บ”์„ ๋ง‰๊ณ , ํ•œ ๋ฒˆ ์“ฐ๊ณ  ๋งˆ๋Š” ๋Œ€์šฉ๋Ÿ‰ ์Šค์บ”์€ ์‹œ๊ฐ„๋Œ€๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ๋””์Šคํฌ ์ฝ๊ธฐ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

Session Logical Reads (block)

๋ฉ”๋ชจ๋ฆฌ(๋ฒ„ํผ ์บ์‹œ)์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ˆ˜์ž…๋‹ˆ๋‹ค. db block gets๊ณผ consistent gets์˜ ํ•ฉ์œผ๋กœ, ๋””์Šคํฌ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์€ ์–‘์„ ๋ด…๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์š”์ฒญ ์ „์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€๋Š ํ•˜๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 557,704 ๋ธ”๋ก, ๋ฒ”์œ„ 55,605 ~ ์•ฝ 1,470๋งŒ. ํ‰์†Œ์—๋„ ์ˆ˜์‹ญ๋งŒ ๋ธ”๋ก์„ ์ฝ๊ณ , ์–ด๋–ค ์ˆœ๊ฐ„ 1,400๋งŒ ๋ธ”๋ก์„ ๋„˜๊ฒผ์Šต๋‹ˆ๋‹ค. ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์—„์ฒญ๋‚œ ์–‘์„ ํ›‘์—ˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ์€ ๋ธ”๋ก์„ ํ›‘๋Š” ๋น„ํšจ์œจ(์ธ๋ฑ์Šค ๋ฏธ์‚ฌ์šฉ·๋„“์€ ๋ฒ”์œ„ ์กฐํšŒ), ๋Œ€ํ˜• ์กฐ์ธ, ๋ฐ˜๋ณต ํ˜ธ์ถœ๋˜๋Š” ๋น„ํšจ์œจ ์ฟผ๋ฆฌ.
-- ๋…ผ๋ฆฌ ์ฝ๊ธฐ(buffer gets)๋ฅผ ๋งŽ์ด ํ•œ SQL ์ฐพ๊ธฐ — ํŠœ๋‹ 1์ˆœ์œ„ ํ›„๋ณด
SELECT sql_id, buffer_gets, executions,
       buffer_gets / GREATEST(executions, 1) AS gets_per_exec,
       sql_text
FROM   v$sql
WHERE  executions > 0
ORDER  BY buffer_gets DESC
FETCH FIRST 20 ROWS ONLY;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Physical Reads๊ฐ€ ๊ฐ™์ด ํฌ๋ฉด → ์บ์‹œ์— ์—†๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋””์Šคํฌ์—์„œ ๋Œ์–ด์˜ค๋Š” ๋Œ€ํ˜• ์Šค์บ”์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ Logical๋งŒ ํฌ๊ณ  Physical์€ ์ž‘์œผ๋ฉด → ์บ์‹œ์—” ์žˆ์ง€๋งŒ ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๋ธ”๋ก์„ ํ›‘๋Š” ๊ฒƒ(์ธ๋ฑ์Šค๋กœ ์ค„์ผ ์—ฌ์ง€)์ž…๋‹ˆ๋‹ค. CPU๊ฐ€ ๋™๋ฐ˜์ด๋ฉด ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๋…ผ๋ฆฌ ์ฝ๊ธฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๋ธ”๋ก์„ ๋งŒ์ง„๋‹ค๋Š” ๋œป์ด๊ณ , ๋””์Šคํฌ๋ฅผ ์•ˆ ๊ฑด๋“œ๋ ค๋„ ๊ทธ๋งŒํผ CPU๋ฅผ ์”๋‹ˆ๋‹ค. ์œ„ gets_per_exec(์‹คํ–‰๋‹น ์ฝ์€ ๋ธ”๋ก ์ˆ˜)๊ฐ€ ํฐ SQL์ด ํŠœ๋‹ 1์ˆœ์œ„์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋กœ ์ฝ๋Š” ๋ฒ”์œ„๋ฅผ ์ขํžˆ๋ฉด ๋…ผ๋ฆฌ ์ฝ๊ธฐ๊ฐ€ ์ค„๊ณ  CPU๋„ ํ•จ๊ป˜ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ์–ด๋–ค ํ™”๋ฉด์ด ๊ฐ‘์ž๊ธฐ ๋А๋ ค์กŒ๋Š”๋ฐ Session Logical Reads์™€ CPU๊ฐ€ ๋™์‹œ์— ์น˜์†Ÿ์•˜๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ํƒ€์ง€ ๋ชปํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ ๋ฐฐํฌ๋œ ์กฐํšŒ ์ฟผ๋ฆฌ๊ฐ€ ๋„“์€ ๋ฒ”์œ„๋ฅผ ์ธ๋ฑ์Šค ์—†์ด ํ›‘์–ด, ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ˆ˜๋ฐฑ๋งŒ ๋ธ”๋ก์„ ๋งŒ์ง€๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. v$sql์—์„œ buffer_gets๊ฐ€ ํฐ SQL์„ ์ฐพ์•„ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋…ผ๋ฆฌ ์ฝ๊ธฐ๊ฐ€ ๊ทน์ ์œผ๋กœ ์ค„๊ณ  CPU๋„ ํ•จ๊ป˜ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค.

Read IOPS (๊ฑด/์ดˆ) / Write IOPS (๊ฑด/์ดˆ)

์ดˆ๋‹น ๋””์Šคํฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ I/O ์—ฐ์‚ฐ ์ˆ˜์ž…๋‹ˆ๋‹ค. "์ดˆ๋‹น ๋ช‡ ๋ฒˆ ๋””์Šคํฌ์— ์ ‘๊ทผํ–ˆ๋‚˜"๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: Read IOPS ํ‰๊ท  ์•ฝ 3,014(๋ฒ”์œ„ 326 ~ 22,510), Write IOPS ํ‰๊ท  ์•ฝ 141(๋ฒ”์œ„ 13.6 ~ 5,938). ์ฝ๊ธฐ IOPS๊ฐ€ ํ‰์†Œ์—๋„ ๊ฝค ๋†’๊ณ  ์ˆœ๊ฐ„ 2๋งŒ์„ ๋„˜๊ธฐ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: Read IOPS๊ฐ€ ์˜ค๋ฅด๋ฉด → ์บ์‹œ ๋ฏธ์Šค(๋ฌผ๋ฆฌ ์ฝ๊ธฐ ์ฆ๊ฐ€). Write IOPS๊ฐ€ ์˜ค๋ฅด๋ฉด → ๋Œ€๋Ÿ‰ ์“ฐ๊ธฐ·์ปค๋ฐ‹. ํด๋ผ์šฐ๋“œ(RDS)์—์„œ๋Š” IOPS์— ํ•œ๋„๊ฐ€ ์žˆ์–ด, ํ•œ๋„์— ๋ถ€๋”ชํžˆ๋ฉด ์ „์ฒด๊ฐ€ ๋А๋ ค์ง‘๋‹ˆ๋‹ค.
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Read IOPS๋Š” Physical Reads์™€ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค — ๋ฌผ๋ฆฌ ์ฝ๊ธฐ๊ฐ€ ๋Š˜๋ฉด Read IOPS๋„ ์˜ค๋ฆ…๋‹ˆ๋‹ค. Write IOPS๋Š” User Commits·Redo Entries·DBWR Undo Block Writes์™€ ํ•จ๊ป˜ ๋ณด๋ฉด → ๋ณ€๊ฒฝ·์ปค๋ฐ‹์ด ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์–‘์„ ๊ฐ€๋Š ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Read IOPS๋Š” ์บ์‹œ์—์„œ ๋ชป ์ฐพ์€ ์ฝ๊ธฐ๊ฐ€, Write IOPS๋Š” ๋ณ€๊ฒฝ๊ณผ ์ปค๋ฐ‹์ด ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์–‘์ž…๋‹ˆ๋‹ค. ๋งค ๊ฑด๋งˆ๋‹ค ์ปค๋ฐ‹ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ์ž˜๊ฒŒ ๋Š˜๋ฆฌ๋ฏ€๋กœ ๋ฌถ์–ด์„œ ์ปค๋ฐ‹ํ•˜๋ฉด ๋ถ€๋‹ด์ด ์ค๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ DB๋Š” IOPS์— ํ•œ๋„๊ฐ€ ์žˆ์–ด, ํ•œ๋„๋ฅผ ๋„˜๊ธฐ๋Š” ํŒจํ„ด(์žฆ์€ ๋‹จ๊ฑด ์ปค๋ฐ‹·๋Œ€๋Ÿ‰ ํ’€ ์Šค์บ”)์€ ์ฝ”๋“œ ๋‹จ๊ณ„์—์„œ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Read Throughput (Bytes/์ดˆ) / Write Throughput (Bytes/์ดˆ)

์ดˆ๋‹น ๋””์Šคํฌ์—์„œ ์ฝ์€ / ๋””์Šคํฌ์— ์“ด ํ‰๊ท  ๋ฐ”์ดํŠธ ์ˆ˜์ž…๋‹ˆ๋‹ค. IOPS๊ฐ€ "ํšŸ์ˆ˜"๋ผ๋ฉด Throughput์€ "์–‘"์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: Read Throughput ํ‰๊ท  ์•ฝ 96MB/s(๋ฒ”์œ„ 3.6MB ~ ์•ฝ 896MB/s), Write Throughput ํ‰๊ท  ์•ฝ 2MB/s(๋ฒ”์œ„ 46KB ~ ์•ฝ 169MB/s). ์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ˆœ๊ฐ„ ์ˆ˜๋ฐฑ MB๊นŒ์ง€ ํŠ€๋Š” ๊ฒƒ์€ ๋Œ€ํ˜• ํ’€ ์Šค์บ”์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์งธ๋กœ ๋Œ์–ด์˜ฌ ๋•Œ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ ํ’€ ์Šค์บ”(์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰), ๋Œ€๋Ÿ‰ ์ ์žฌ·๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ(์“ฐ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰).
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Read Throughput๊ณผ Physical Reads·Read IOPS๋ฅผ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค — ์…‹์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด ๋Œ€ํ˜• ํ’€ ์Šค์บ”์ž…๋‹ˆ๋‹ค. Write Throughput๊ณผ Redo Entries·Write IOPS๊ฐ€ ๋™๋ฐ˜์ด๋ฉด → ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์ด ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํ•œ ๋ฒˆ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์™€ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€๋ฅผ ๋ด…๋‹ˆ๋‹ค. ํ•„์š” ์ด์ƒ์œผ๋กœ ๋„“์€ ๋ฒ”์œ„๋ฅผ ์ฝ๊ฑฐ๋‚˜ SELECT *๋กœ ๋ถˆํ•„์š”ํ•œ ์ปฌ๋Ÿผ๊นŒ์ง€ ๋Œ์–ด์˜ค๋ฉด ์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ปค์ง‘๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ปฌ๋Ÿผ·๋ฒ”์œ„๋งŒ ์ฝ๋„๋ก ์ขํžˆ๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ค„๊ณ  ์‘๋‹ต๋„ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

Latency (์ดˆ)

ํŠธ๋žœ์žญ์…˜๋‹น SQL ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ํ•œ ์ž‘์—…์ด ๋๋‚˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ํ‰๊ท  ์‹œ๊ฐ„์„ ๋ด…๋‹ˆ๋‹ค. ์‘๋‹ต ์†๋„๋ฅผ ์ง์ ‘ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ๋ผ ์ฒด๊ฐ ์„ฑ๋Šฅ๊ณผ ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 0.1์ดˆ, ๋ฒ”์œ„ 0.00215 ~ 5.83์ดˆ. ํ‰์†Œ์—” 0.1์ดˆ ์•ˆํŒŽ์œผ๋กœ ๋น ๋ฅธ๋ฐ, ์–ด๋–ค ์ˆœ๊ฐ„ 5.8์ดˆ๊นŒ์ง€ ๋Š˜์–ด๋‚œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆœ๊ฐ„์ด ๋А๋ ค์ง„ ์‹œ์ ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ(ํ’€ ์Šค์บ”·๋Œ€ํ˜• ์กฐ์ธ), ๋””์Šคํฌ I/O ๋ณ‘๋ชฉ, ๋ฝ ๋Œ€๊ธฐ.
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Physical Reads·Read IOPS๊ฐ€ ๊ฐ™์ด ์˜ค๋ฅด๋ฉฐ Latency๊ฐ€ ๊ธธ์–ด์ง€๋ฉด → ๋””์Šคํฌ ์ฝ๊ธฐ ๋ณ‘๋ชฉ์ž…๋‹ˆ๋‹ค. enq: TX - Row Lock Contention์ด ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋ฝ ๋Œ€๊ธฐ๋กœ ๋А๋ ค์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฟผ๋ฆฌ ์ž์ฒด๋ณด๋‹ค ๊ฒฝํ•ฉ์ด ์›์ธ). Active Session๋„ ๊ฐ™์ด ์˜ค๋ฅด๋ฉด → ๋А๋ฆฐ ์ฟผ๋ฆฌ๊ฐ€ ์Œ“์ด๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

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

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ํ‰์†Œ 0.1์ดˆ์ด๋˜ Latency๊ฐ€ ํŠน์ • ์‹œ๊ฐ„๋Œ€์—๋งŒ 5์ดˆ๋กœ ํŠ„๋‹ค๋ฉด, ๊ทธ ์‹œ๊ฐ„์— ๋„๋Š” ๋ฌด๊ฑฐ์šด ๋ฐฐ์น˜๋‚˜ ๋ฝ์„ ์˜ค๋ž˜ ์žก๋Š” ํŠธ๋žœ์žญ์…˜์„ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์‹œ๊ฐ์— Physical Reads๊ฐ€ ํ•จ๊ป˜ ์น˜์†Ÿ์•˜๋‹ค๋ฉด ๋Œ€ํ˜• ํ’€ ์Šค์บ”, enq: TX ๋Œ€๊ธฐ๊ฐ€ ํ•จ๊ป˜ ์˜ฌ๋ž๋‹ค๋ฉด ๋ฝ ๊ฒฝํ•ฉ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ง€ํ‘œ๊ฐ€ ๊ฐ™์ด ์›€์ง์˜€๋Š”์ง€๊ฐ€ ์›์ธ์„ ๊ฐ€๋ฅด๋Š” ๋‹จ์„œ์ž…๋‹ˆ๋‹ค.


7. ๋„คํŠธ์›Œํฌ · ์Šคํ† ๋ฆฌ์ง€

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

ํด๋ผ์šฐ๋“œ(RDS) ํŠน์œ ์˜ ๊ฐœ๋… ํ•˜๋‚˜๋ฅผ ๋จผ์ € ํ’€์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ฒ„์ŠคํŠธ(burst, ํฌ๋ ˆ๋”ง): ํด๋ผ์šฐ๋“œ DB(RDS ๋“ฑ)๋Š” ๋””์Šคํฌ·๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ์— ํ•œ๋„๋ฅผ ๋‘๋Š”๋ฐ, ํ‰์†Œ์— ํ•œ๋„๋ฅผ ๋‹ค ์•ˆ ์“ฐ๋ฉด ๊ทธ ์—ฌ์œ ๋ถ„์„ "ํฌ๋ ˆ๋”ง" ์œผ๋กœ ๋ชจ์•„ ๋‘ก๋‹ˆ๋‹ค. ๊ฐ‘์ž๊ธฐ ์ผ์ด ๋ชฐ๋ฆฌ๋ฉด ๋ชจ์•„ ๋‘” ํฌ๋ ˆ๋”ง์„ ํ—์–ด ์ž ๊น ํ•œ๋„ ์ด์ƒ์œผ๋กœ ๋ชฐ์•„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฒ„์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ํœด๋Œ€ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ‰์†Œ ์•„๊ผˆ๋‹ค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ชฐ์•„ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํฌ๋ ˆ๋”ง์ด ๋ฐ”๋‹ฅ๋‚˜๋ฉด ๋‹ค์‹œ ๊ธฐ๋ณธ ํ•œ๋„๋กœ ๋–จ์–ด์ง€๋ฏ€๋กœ, ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด ์˜ค๋ž˜ ์ด์–ด์ง€๋ฉด ์–ด๋А ์ˆœ๊ฐ„ ๊ฐ‘์ž๊ธฐ ๋А๋ ค์ง‘๋‹ˆ๋‹ค. ์•„๋ž˜ EBS Balance ์ง€ํ‘œ๊ฐ€ ์ด ํฌ๋ ˆ๋”ง์˜ ์ž”๋Ÿ‰์„ ๋ด…๋‹ˆ๋‹ค.

Network Transmit Throughput (Bytes/์ดˆ) / Network Receive Throughput (Bytes/์ดˆ)

DB ์ธ์Šคํ„ด์Šค๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ž…๋‹ˆ๋‹ค. Transmit(์†ก์‹ )์€ DB๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ์–‘, Receive(์ˆ˜์‹ )๋Š” DB๋กœ ๋“ค์–ด์˜ค๋Š” ์ฟผ๋ฆฌ·๋ฐ์ดํ„ฐ์˜ ์–‘์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ์†ก์‹  ํ‰๊ท  ์•ฝ 14.5MB/s(๋ฒ”์œ„ 2.7MB ~ ์•ฝ 191MB/s), ์ˆ˜์‹  ํ‰๊ท  ์•ฝ 12.3MB/s(๋ฒ”์œ„ 2.7MB ~ ์•ฝ 22.5MB/s). ์†ก์‹ ์ด ์ˆœ๊ฐ„ 191MB๊นŒ์ง€ ํŠ€๋Š” ๊ฒƒ์€ ๋Œ€๋Ÿ‰ ๊ฒฐ๊ณผ๋ฅผ ํผ๋‚ด๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋Œ ๋•Œ์ž…๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ(SELECT *๋กœ ํฐ ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ˜ํ™˜ ๋“ฑ), ๋Œ€๋Ÿ‰ ์ ์žฌ, ๋ณต์ œ ํŠธ๋ž˜ํ”ฝ.
-- ๋‚˜์œ ์˜ˆ: ํŽ˜์ด์ง• ์—†์ด ํฐ ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ๋ชจ๋“  ์ปฌ๋Ÿผ์œผ๋กœ ๋ฐ˜ํ™˜ → ์†ก์‹  ํŠธ๋ž˜ํ”ฝ ํญ์ฆ
SELECT * FROM products;
-- ๊ณ ์นœ ์˜ˆ: ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ, ํŽ˜์ด์ง•์œผ๋กœ ์ž˜๋ผ์„œ ๋ฐ˜ํ™˜
SELECT product_id, name, price
FROM   products
ORDER  BY product_id
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: ์†ก์‹  ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ๊ณผ Session Logical Reads๊ฐ€ ๋™๋ฐ˜์ด๋ฉด → ํฐ ๊ฒฐ๊ณผ์…‹์„ ํผ๋‚ด๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ๊ณผ Redo Entries·Write IOPS๊ฐ€ ๋™๋ฐ˜์ด๋ฉด → ๋Œ€๋Ÿ‰ ์ ์žฌ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ‰ํƒ„ํ•œ๋ฐ ํ•œ์ชฝ๋งŒ ํŠ€๋ฉด ๋ณต์ œ ํŠธ๋ž˜ํ”ฝ ๋“ฑ ํŠน์ • ๊ฒฝ๋กœ๋ฅผ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค.

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

Free Storage Space (Bytes)

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ์—ฌ์œ  ๊ณต๊ฐ„ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ๋‚จ์€ ๋นˆ ๊ณต๊ฐ„์„ ๋ฐ”์ดํŠธ๋กœ ๋ด…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: ํ‰๊ท  ์•ฝ 709GB, ๋ฒ”์œ„ ์•ฝ 690 ~ 729GB๋กœ ํ‰ํƒ„ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์œ ๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ์ž„๊ณ„ํ‘œ๋Š” ์‚ฌ์šฉ๋ฅ (%) ๊ธฐ์ค€์ด๋ผ ์—ฌ์œ  ์šฉ๋Ÿ‰(bytes)์—๋Š” ์ ˆ๋Œ€ ์ž„๊ณ„๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ๋Œ€์‹  ์—ฌ์œ  ๊ณต๊ฐ„์ด ๊ธ‰๊ฒฉํžˆ ์ค„์–ด๋“œ๋Š” ์ถ”์„ธ๋ฅผ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ์“ฐ๊ธฐ ์ž์ฒด๊ฐ€ ๋ฉˆ์ถฐ ์žฅ์• ๋กœ ์ง๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด(์ค„๋ฉด) ์˜์‹ฌํ•  ๊ฒƒ: ๋Œ€๋Ÿ‰ ์ ์žฌ๋กœ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€, ์ •๋ฆฌ๋˜์ง€ ์•Š๊ณ  ์Œ“์ด๋Š” ๋กœ๊ทธ·์•„์นด์ด๋ธŒ Redo ๋กœ๊ทธ, temp ์˜์—ญ์„ ํฌ๊ฒŒ ์“ฐ๋Š” ์ •๋ ฌ.
-- ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค๋ณ„ ์‚ฌ์šฉ๋Ÿ‰·์—ฌ์œ  ๊ณต๊ฐ„ ํ™•์ธ (๊ฐ€๋“ ์ฐจ๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๋ณธ๋‹ค)
SELECT df.tablespace_name,
       ROUND(SUM(df.bytes)/1024/1024/1024, 1)            AS total_gb,
       ROUND((SUM(df.bytes) - NVL(fs.free_bytes,0))/1024/1024/1024, 1) AS used_gb,
       ROUND(NVL(fs.free_bytes,0)/1024/1024/1024, 1)     AS free_gb
FROM   dba_data_files df
LEFT JOIN (SELECT tablespace_name, SUM(bytes) AS free_bytes
           FROM dba_free_space GROUP BY tablespace_name) fs
       ON fs.tablespace_name = df.tablespace_name
GROUP  BY df.tablespace_name, fs.free_bytes
ORDER  BY free_gb;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: (OS) Disk Percent์™€ ๋ฐ˜๋Œ€๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค(์—ฌ์œ ๊ฐ€ ์ค„๋ฉด ๋””์Šคํฌ ์‚ฌ์šฉ๋ฅ ์ด ์˜ค๋ฆ„). Redo Entries·Undo Change Vector Size๊ฐ€ ํฌ๋ฉด → ๋ณ€๊ฒฝ๋Ÿ‰์ด ๋งŽ์•„ ๋กœ๊ทธ·undo๊ฐ€ ๊ณต๊ฐ„์„ ๋จน๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ์Šคํ† ๋ฆฌ์ง€๋Š” ํ•œ ๋ฒˆ ์ฐจ๋ฉด ์“ฐ๊ธฐ๊ฐ€ ๋ฉˆ์ถฐ ๊ฐ€์žฅ ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์ •๋ฆฌ·์•„์นด์ด๋ธŒํ•˜๊ณ , ๋Œ€๋Ÿ‰ ์ ์žฌ·์‚ญ์ œ๋Š” ํ•œ ๋ฒˆ์— ๋ชฐ์ง€ ๋ง๊ณ  ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํฐ ์ •๋ ฌ์„ ์œ ๋ฐœํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” temp ๊ณต๊ฐ„์„ ํฌ๊ฒŒ ์“ฐ๋ฏ€๋กœ ์ธ๋ฑ์Šค๋กœ ์ •๋ ฌ์„ ๋Œ€์‹ ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋„ ๊ณต๊ฐ„ ๊ด€๋ฆฌ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค — ์—ฌ์œ  ๊ณต๊ฐ„์ด ํ‰์†Œ์—” ํ‰ํƒ„ํ•˜๋‹ค๊ฐ€ ์–ด๋А ๋‚ ๋ถ€ํ„ฐ ๋งค์ผ ์ผ์ •๋Ÿ‰์”ฉ ์ค„์–ด๋“œ๋Š” ์šฐํ•˜ํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ทธ๋ ค์ง„๋‹ค๋ฉด, ์ •๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋กœ๊ทธ๋‚˜ ๋ฉˆ์ถ”์ง€ ์•Š๋Š” ์ ์žฌ ๋ฐฐ์น˜๋ฅผ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ”์„ธ๋Œ€๋กœ๋ฉด ๋ฉฐ์น  ๋’ค ๊ณต๊ฐ„์ด ๋ฐ”๋‹ฅ๋‚˜ ์“ฐ๊ธฐ๊ฐ€ ๋ฉˆ์ถ”๋ฏ€๋กœ, ์ ˆ๋Œ€๊ฐ’์ด ์œ„ํ—˜์„ ์— ๋‹ฟ๊ธฐ ์ „์— ์ถ”์„ธ๋ฅผ ๋ณด๊ณ  ๋ฏธ๋ฆฌ ์†์“ฐ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

EBS Byte Balance Max (credits) / EBS IO Balance Max (credits)

RDS ์ธ์Šคํ„ด์Šค์˜ ๋ฒ„์ŠคํŠธ ๋ฒ„ํ‚ท์— ๋‚จ์•„ ์žˆ๋Š” ํฌ๋ ˆ๋”ง ์ž”๋Ÿ‰(%)์ž…๋‹ˆ๋‹ค. EBS Byte Balance๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) ํฌ๋ ˆ๋”ง, EBS IO Balance๋Š” I/O ํฌ๋ ˆ๋”ง์˜ ์ž”์—ฌ ๋น„์œจ์ž…๋‹ˆ๋‹ค.

  • ๊ด€์ธก๊ฐ’: EBS Byte Balance ํ‰๊ท  ์•ฝ 99%(๋ฒ”์œ„ 98 ~ 100), EBS IO Balance ์•ฝ 99%๋กœ ๊ฑฐ์˜ 100%์— ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋ ˆ๋”ง์„ ๊ฑฐ์˜ ์•ˆ ํ—๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋ผ ์ •์ƒ์ž…๋‹ˆ๋‹ค.
  • ์œ„ํ—˜ ์‹ ํ˜ธ: ์ด ๊ฐ’์ด ๊พธ์ค€ํžˆ ๋–จ์–ด์ง€๋ฉด ๋ฒ„์ŠคํŠธ ํฌ๋ ˆ๋”ง์„ ๊ณ„์† ํ—์–ด ์“ฐ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. 0%์— ๋‹ฟ์œผ๋ฉด ๊ธฐ๋ณธ ํ•œ๋„๋กœ ๋–จ์–ด์ ธ ๋””์Šคํฌ·๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ์ด ๊ฐ‘์ž๊ธฐ ๋‚˜๋น ์ง‘๋‹ˆ๋‹ค.
  • ํŠ€๋ฉด(๋–จ์–ด์ง€๋ฉด) ์˜์‹ฌํ•  ๊ฒƒ: ๋ฌด๊ฑฐ์šด I/O ์ž‘์—…์ด ์˜ค๋ž˜ ์ง€์†(๋Œ€๋Ÿ‰ ํ’€ ์Šค์บ”·๋Œ€๋Ÿ‰ ์ ์žฌ๊ฐ€ ๊ธธ๊ฒŒ ์ด์–ด์ง).
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Read/Write IOPS·Throughput์ด ์˜ค๋ž˜ ๋†’๊ฒŒ ์œ ์ง€๋˜๋ฉด → ํฌ๋ ˆ๋”ง์ด ๊นŽ์ด๋ฉฐ ์ด Balance๊ฐ€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. Balance๊ฐ€ 0์— ๊ฐ€๊นŒ์›Œ์ง€๋Š”๋ฐ Latency๊ฐ€ ์˜ค๋ฅด๋ฉด → ํ•œ๋„๋กœ ๋–จ์–ด์ ธ ๋А๋ ค์ง€๊ธฐ ์‹œ์ž‘ํ•œ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — ๋ฒ„์ŠคํŠธ ํฌ๋ ˆ๋”ง์€ ํ‰์†Œ ์•„๊ปด ๋‘์—ˆ๋‹ค๊ฐ€ ์ž ๊น ๋ชฐ์•„ ์“ฐ๋Š” ์—ฌ์œ ๋ถ„์ž…๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด I/O ์ž‘์—…์ด ์งง๊ฒŒ ๋๋‚˜๋ฉด ๋ฌธ์ œ์—†์ง€๋งŒ, ๋Œ€๋Ÿ‰ ์ฒ˜๋ฆฌ๊ฐ€ ์˜ค๋ž˜ ์ด์–ด์ง€๋ฉด ํฌ๋ ˆ๋”ง์ด ๋ฐ”๋‹ฅ๋‚˜ ๊ฐ‘์ž๊ธฐ ๋А๋ ค์ง‘๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰ ์ž‘์—…์„ ๋‚˜๋ˆ ์„œ ๋ถ„์‚ฐํ•˜๊ณ , ์šด์˜ ํŠธ๋ž˜ํ”ฝ๊ณผ ์‹œ๊ฐ„๋Œ€๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ํฌ๋ ˆ๋”ง ๊ณ ๊ฐˆ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


8. ๊ธฐํƒ€

Oracle Elapse Time Monitor (ms)

SQL ์ˆ˜ํ–‰ ์‹œ๊ฐ„(Elapse Time)์„ ํฉ๋ฟŒ๋ ค(scatter) ๋ณด์—ฌ ์ฃผ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ SQL์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ ธ๋Š”์ง€์˜ ๋ถ„ํฌ๋ฅผ ๋ด…๋‹ˆ๋‹ค.

  • ๋‹จ์œ„ ์ฃผ์˜: ์ด ์ง€ํ‘œ๋งŒ ๋ฐ€๋ฆฌ์ดˆ(ms) ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์•ž์—์„œ ๋ณธ ๋‹ค๋ฅธ ์‹œ๊ฐ„ ์ง€ํ‘œ(Latency·Log File Sync·enq: TX·Library Cache Lock)๋Š” ๋ชจ๋‘ ์ดˆ(sec) ๋‹จ์œ„์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ "์‹œ๊ฐ„"์ด๋ผ๋„ ๋‹จ์œ„๊ฐ€ ๋‹ฌ๋ผ, ๊ทธ๋ž˜ํ”„๋‚˜ ๋ฆฌํฌํŠธ์—์„œ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•  ๋•Œ ๋‹จ์œ„๋ฅผ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 0.1๊ณผ 100์ด ์‚ฌ์‹ค ๊ฐ™์€ ์‹œ๊ฐ„(0.1์ดˆ = 100ms)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ๋Š” ๋ฒ•: scatter ์ง€ํ‘œ๋Š” ์‹œ๊ณ„์—ด ํ‰๊ท ๋ณด๋‹ค ๋ถ„ํฌ๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ SQL์ด ์งง์€๋ฐ ์ผ๋ถ€๋งŒ ๊ธธ๊ฒŒ ํŠ„๋‹ค๋ฉด, ๊ทธ ๊ธธ๊ฒŒ ํŠ„ ์ ๋“ค์ด ๋А๋ฆฐ ์ฟผ๋ฆฌ ํ›„๋ณด์ž…๋‹ˆ๋‹ค.
-- ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ธด SQL ํ›„๋ณด ์ฐพ๊ธฐ (์‹คํ–‰๋‹น ํ‰๊ท  ๊ฒฝ๊ณผ์‹œ๊ฐ„, ์ดˆ ๋‹จ์œ„๋กœ ํ™˜์‚ฐ)
SELECT sql_id,
       ROUND(elapsed_time / GREATEST(executions, 1) / 1e6, 3) AS avg_sec,
       executions, sql_text
FROM   v$sql
WHERE  executions > 0
ORDER  BY elapsed_time / GREATEST(executions, 1) DESC
FETCH FIRST 20 ROWS ONLY;
  • ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ: Latency๊ฐ€ ๊ฐ™์ด ๊ธธ์–ด์ง€๋ฉด → ์ „๋ฐ˜์ ์œผ๋กœ SQL์ด ๋А๋ ค์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • SQL๋งŒ ๊ธธ๊ฒŒ ํŠ€๋ฉด v$sql์—์„œ ๊ทธ sql_id๋ฅผ ์ฐพ์•„ ์‹คํ–‰๊ณ„ํš(์ธ๋ฑ์Šค ์‚ฌ์šฉ ์—ฌ๋ถ€)์„ ๋ด…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๊ด€์  — Elapse Time์ด ๊ธธ๊ฒŒ ํŠ€๋Š” SQL์€ ๋Œ€๋ถ€๋ถ„ ์ธ๋ฑ์Šค๋ฅผ ๋ชป ํƒ€๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋‹ค๋ฃจ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋‹จ์œ„๊ฐ€ ms๋ผ๋Š” ์ ๋งŒ ์œ ์˜ํ•˜๋ฉด, ์œ„ v$sql ์กฐํšŒ๋กœ ๋А๋ฆฐ SQL์„ ์ฐพ์•„ ์ธ๋ฑ์Šค·๊ฒฐ๊ณผ ํฌ๊ธฐ๋ฅผ ์†๋ณด๋Š” ํ๋ฆ„์€ ์•ž์˜ ๋‹ค๋ฅธ ์ง€ํ‘œ๋“ค๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


์ƒํ™ฉ๋ณ„๋กœ ๋ณด๊ธฐ — ๋ฐฐ์น˜·๋ฐฑ์—…์ด ๋Œ ๋•Œ ์–ด๋–ค ์ง€ํ‘œ๊ฐ€ ์›€์ง์ด๋‚˜

์ง€๊ธˆ๊นŒ์ง€๋Š” ์ง€ํ‘œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ดค์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์ด ์—ฌ๋Ÿฌ ์ง€ํ‘œ๋ฅผ ๋™์‹œ์— ์›€์ง์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์ •๊ธฐ ๋ฐฐ์น˜๋‚˜ ๋ฐฑ์—…์ฒ˜๋Ÿผ ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ๋„๋Š” ์ž‘์—…์€ ๋งค๋ฒˆ ๋น„์Šทํ•œ ์ง€ํ‘œ ๋ฌถ์Œ์„ ๋Œ์–ด์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. Oracle์€ Redo·Undo ๊ณ„์—ด์ด ๋ณ€๊ฒฝ๋Ÿ‰์— ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•ด์„œ, ๋ฐฐ์น˜์˜ ์ข…๋ฅ˜๋ฅผ ์ง€ํ‘œ ํŒจํ„ด์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฐฐ์น˜ ์œ ํ˜•๋ณ„ ์˜ˆ์ƒ ์ง€ํ‘œ ๋ณ€ํ™”

๋ฐฐ์น˜ ์œ ํ˜• ํ•จ๊ป˜ ์˜ค๋ฅด๋Š” ์ง€ํ‘œ ์ด์œ 
๋Œ€๋Ÿ‰ ์ ์žฌ (INSERT/UPDATE/DELETE) Redo Entries, Undo Change Vector Size, DBWR Undo Block Writes, Log File Sync, Write IOPS·Write Throughput, CPU ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค Redo(๋ณ€๊ฒฝ ๊ธฐ๋ก)์™€ Undo(๋ณ€๊ฒฝ ์ „ ๊ฐ’)๊ฐ€ ์ƒ๊ธฐ๊ณ , ์ปค๋ฐ‹์ด Redo flush๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๋””์Šคํฌ ์“ฐ๊ธฐ๋กœ ๋‚ด๋ ค๊ฐ
์ง‘๊ณ„·๋ฆฌํฌํŠธ (๋Œ€๋Ÿ‰ SELECT) Physical Reads, Session Logical Reads, Read IOPS·Read Throughput, Latency, CPU ํฐ ํ…Œ์ด๋ธ”์„ ํ›‘์–ด ์ง‘๊ณ„ํ•˜๋ฏ€๋กœ ์ฝ์€ ๋ธ”๋ก ์ˆ˜·๋””์Šคํฌ ์ฝ๊ธฐ๊ฐ€ ๊ธ‰์ฆํ•˜๊ณ  ์‘๋‹ต์ด ๋А๋ ค์ง
๋Œ€๋Ÿ‰ ์‚ญ์ œ·์ •๋ฆฌ (DELETE) Redo Entries, Undo Change Vector Size, enq: TX - Row Lock Contention, Write IOPS ๋งŽ์€ ํ–‰์„ ํ•œ ๋ฒˆ์— ์ง€์šฐ๋ฉด Redo·undo๊ฐ€ ํฌ๊ฒŒ ์Œ“์ด๊ณ  ๋ฝ์„ ์˜ค๋ž˜ ์žก์Œ
๋ฐฑ์—… Read IOPS·Read Throughput, Network, CPU(์•ฝ๊ฐ„), EBS Balance ํ•˜๋ฝ ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ์ฝ์–ด ๋‚ด๋ณด๋‚ด๋ฏ€๋กœ ๋””์Šคํฌ ์ฝ๊ธฐ·๋„คํŠธ์›Œํฌ๊ฐ€ ์˜ค๋ฅด๊ณ , I/O ํฌ๋ ˆ๋”ง์ด ๊นŽ์ž„
๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ๋ฏธ์‚ฌ์šฉ ์ฝ”๋“œ ๋ฐฐํฌ Parse Count (Hard), Library Cache Lock, CPU ๊ฐ’์„ ๋ฐ•์€ SQL์ด ๋งค๋ฒˆ ์ƒˆ ๋ฌธ์žฅ์œผ๋กœ ๋ณด์—ฌ Hard parse๊ฐ€ ํญ์ฆํ•˜๊ณ  Library Cache ๊ฒฝํ•ฉ์ด ์ƒ๊น€

์˜ˆ๋ฅผ ๋“ค๋ฉด

๋งค์ผ ์ƒˆ๋ฒฝ ํ†ต๊ณ„ ๋ฐฐ์น˜๊ฐ€ ํฐ ํ…Œ์ด๋ธ”์„ ํ’€ ์Šค์บ”ํ•ด ์ง‘๊ณ„ํ•œ๋‹ค๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‹œ๊ฐ„์—๋Š” Session Logical Reads๊ฐ€ ์ˆ˜๋ฐฑ๋งŒ ๋ธ”๋ก์œผ๋กœ ๋›ฐ๊ณ , Physical Reads์™€ Read IOPS·Read Throughput์ด ๋”ฐ๋ผ ์˜ค๋ฅด๋ฉฐ, Latency๊ฐ€ ๊ธธ์–ด์ง€๊ณ  CPU๋„ ์ง‘๊ณ„ ์—ฐ์‚ฐ์œผ๋กœ ๊ฐ™์ด ์˜ค๋ฆ…๋‹ˆ๋‹ค. ์ด ๋ฌถ์Œ์ด ๊ฐ™์€ ์‹œ๊ฐ์— ํ•จ๊ป˜ ์›€์ง์ด๋Š” ๊ฒƒ์ด ์ด ๋ฐฐ์น˜์˜ ์ง€๋ฌธ ๊ฐ™์€ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

์›”๋ง ๋Œ€๋Ÿ‰ ์ ์žฌ ๋ฐฐ์น˜๋ผ๋ฉด ๋ฐ˜๋Œ€๋กœ Redo Entries·Undo Change Vector Size·DBWR Undo Block Writes๊ฐ€ ๊ฐ™์ด ์˜ค๋ฆ…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋•Œ ์ ์žฌ๋ฅผ ํ•˜๋‚˜์˜ ํฐ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์–ด ์ปค๋ฐ‹์„ ๋Šฆ๊ฒŒ ํ•˜๋ฉด, undo๊ฐ€ ํฌ๊ฒŒ ์Œ“์ด๊ณ  enq: TX ๋ฝ ๋Œ€๊ธฐ๊นŒ์ง€ ๋™๋ฐ˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค ๊ฑด ์ปค๋ฐ‹์œผ๋กœ ๋ฐ”๊พธ๋ฉด ์ด๋ฒˆ์—” Log File Sync๊ฐ€ ์น˜์†Ÿ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ€๋Ÿ‰ ์ž‘์—…์€ ๋„ˆ๋ฌด ํฌ์ง€๋„ ๋„ˆ๋ฌด ์ž˜์ง€๋„ ์•Š์€ ๋ฌถ์Œ(์ˆ˜์ฒœ~์ˆ˜๋งŒ ๊ฑด)์œผ๋กœ ๋‚˜๋ˆ  ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒƒ์ด ๊ท ํ˜•์ ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ — "์–ธ์ œ" ์˜ฌ๋ž๋Š”์ง€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€, ์ด ์ง€ํ‘œ๋“ค์ด ๋ฐฐ์น˜ ์‹œ๊ฐ„๋Œ€์— ํ•จ๊ป˜ ์˜ค๋ฅด๋Š” ๊ฒƒ์€ ์ •์ƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •ํ•ด์ง„ ์ž‘์—…์ด ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ์ž์›์„ ์“ฐ๋Š” ๊ฒƒ์ด๋‹ˆ๊นŒ์š”. ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

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

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


์ •๋ฆฌํ•˜๋ฉฐ

Oracle ์ง€ํ‘œ๋Š” MySQL๋ณด๋‹ค ์ฒ˜์Œ ๋ณด๋Š” ๋‹จ์–ด๊ฐ€ ๋งŽ์•˜์ง€๋งŒ, ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๊ณ  / ํ‰์†Œ ์–ด๋А ์ •๋„์ด๊ณ  / ํŠ€๋ฉด ๋ญ˜ ์˜์‹ฌํ•˜๊ณ  / ์–ด๋–ค ์ฟผ๋ฆฌ๋กœ ํ™•์ธํ•˜๋Š”์ง€ ๋กœ ๋ฌถ๊ณ , ๋น„์œ ์™€ ์‹ค์ œ ์žฅ์•  ์‹œ๋‚˜๋ฆฌ์˜ค, ์‹ค์ธก ๋ฒ”์œ„๋ฅผ ๋ถ™์—ฌ ์ •๋ฆฌํ•˜๋‹ˆ ํ•œ๊ฒฐ ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ฐœ๋…(SGA·Redo·Undo·Library Cache·ํŒŒ์‹ฑ·ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค)์„ ๋จผ์ € ์žก์•„ ๋‘๋‹ˆ, ์ง€ํ‘œ๋“ค์ด ๊ทธ ๊ฐœ๋…๋“ค์˜ ๋™์ž‘์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค.

Oracle์—์„œ ๊ธฐ์–ตํ•ด ๋‘˜ ํ•ต์‹ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • "์—ฐ๊ฒฐ(Total Session)" ๊ณผ "ํ™œ์„ฑ(Active Session)" ์€ ๋‹ค๋ฅด๋‹ค. ์œ„ ์ธ์Šคํ„ด์Šค๋„ ์—ฐ๊ฒฐ์€ ์•ฝ 3,700์ธ๋ฐ ํ™œ์„ฑ์€ 1 ์•ˆํŒŽ์ด์—ˆ๋‹ค. ๋ถ€ํ•˜๋Š” ํ™œ์„ฑ์œผ๋กœ ๋ณธ๋‹ค.
  • Redo·Undo๋Š” ๋ณ€๊ฒฝ๋Ÿ‰์˜ ๊ฑฐ์šธ์ด๋‹ค. Redo Entries·Undo Change Vector Size๊ฐ€ ํ‰์†Œ ์ž‘๋‹ค๊ฐ€ ์ˆœ๊ฐ„ ์ˆ˜์‹ญ๋งŒ, ์ˆ˜์–ต์œผ๋กœ ํŠ€๋ฉด ๋Œ€๋Ÿ‰ DML ๋ฐฐ์น˜๋‹ค. ๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝ์€ ๋‚˜๋ˆ ์„œ ์ปค๋ฐ‹ํ•œ๋‹ค.
  • Library Cache·ํŒŒ์‹ฑ์€ ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค. Parse Count (Hard)๊ฐ€ ํŠ€๋ฉด ๊ฑฐ์˜ ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ๋ฏธ์‚ฌ์šฉ์ด๋‹ค. ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ•์ง€ ๋ง๊ณ  ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋กœ ๋„˜๊ธด๋‹ค.
  • ์ฝ๊ธฐ๋Š” ๋…ผ๋ฆฌ(Session Logical Reads)์™€ ๋ฌผ๋ฆฌ(Physical Reads)๋กœ ๋‚˜๋‰œ๋‹ค. ๋‘˜ ๋‹ค ์ˆœ๊ฐ„ ์ตœ๋Œ“๊ฐ’์ด ํฌ๋ฉด ํ’€ ์Šค์บ”์„ ์˜์‹ฌํ•˜๊ณ , v$sql์˜ buffer_gets·disk_reads๋กœ ๋ฒ”์ธ SQL์„ ์ฐพ๋Š”๋‹ค.
  • ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค·Free Storage Space๋Š” ๊ฐ€๋“ ์ฐจ๋ฉด ์“ฐ๊ธฐ๊ฐ€ ๋ฉˆ์ถ˜๋‹ค. ์ ˆ๋Œ€๊ฐ’๋ณด๋‹ค ์ค„์–ด๋“œ๋Š” ์ถ”์„ธ๋ฅผ ๋ณธ๋‹ค.
  • ์‹œ๊ฐ„ ์ง€ํ‘œ ๋‹จ์œ„์— ์ฃผ์˜ํ•œ๋‹ค. Latency·Log File Sync·enq: TX·Library Cache Lock์€ ์ดˆ์ธ๋ฐ, Oracle Elapse Time Monitor๋งŒ ms๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ์ง€ํ‘œ๋Š” ํ˜ผ์ž ํŠ€์ง€ ์•Š๋Š”๋‹ค. CPU·Active Session·Reads·IOPS·Redo๊ฐ€ ๊ฐ™์€ ์‹œ๊ฐ์— ํ•จ๊ป˜ ์›€์ง์ด๋Š”์ง€๋ฅผ ๋ณด๋ฉด ์›์ธ์˜ ์œค๊ณฝ์ด ์žกํžŒ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ์ง€ํ‘œ๋งˆ๋‹ค "ํ•จ๊ป˜ ํ™•์ธํ•  ์ง€ํ‘œ"๋ฅผ ๊ฐ™์ด ์ ์–ด ๋‘” ๊ฒƒ์ด๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” PostgreSQL ์ง€ํ‘œ๋ฅผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. PostgreSQL์€ Vacuum, Dead Tuple, ํŠธ๋žœ์žญ์…˜ ID ๋…ธํ™”(Age) ์ฒ˜๋Ÿผ MVCC๋ฅผ ์ฒญ์†Œํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‚˜์˜ค๋Š” ๊ทธ DB๋งŒ์˜ ์ง€ํ‘œ๊ฐ€ ์žˆ์–ด, Oracle์˜ Undo์™€ ๋น„๊ตํ•ด ๋ณด๋ฉด ๊ฐ™์€ ๋ฌธ์ œ(๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ ์ •๋ฆฌ)๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ฒŒ ํ‘ธ๋Š”์ง€๊ฐ€ ์ž˜ ๋ณด์ผ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.