๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ORACLE/SQL

[Oracle] ์˜ค๋ผํด DELETE, TRUNCATE ์ฐจ์ด(HIGH WATER MARK) :: ๋งˆ์ด์ž๋ชฝ

by ๐ŸŒปโ™š 2020. 3. 23.

์˜ค๋ผํด์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด๋กœ DELETE, TRUNCATE, DROP ์ด ์žˆ์Šต๋‹ˆ๋‹ค. DROP์˜ ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์ „๋ถ€์‚ญ์ œ๋ฅผ ํ•ด์ฃผ๊ณ  DELETE์™€ TRUNCATE์€ ํ…Œ์ด๋ธ”์„ ๋‚จ๊ธฐ๊ณ  ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

 

 

DELETE์™€ TRUNCATE ์ฐจ์ด

 

DML๊ณผ DDL

DELETE์™€ TRUNCATE์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” DML๊ณผ DDL์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DDL์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋ช…๋ น์ด ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘๊ณผ ๋์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ๋ฐ˜์˜์ด ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ TRUNCATE์€ ROLLBACK์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐ˜๋ฉด DELETE์€ DML ๋ช…๋ น์–ด์ด๋ฏ€๋กœ TRANSACTION ๋‹จ์œ„๋กœ ROLLBACK๊ณผ COMMIT์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

์ €์žฅ๊ณต๊ฐ„ ๋ฐ˜๋‚ฉ๊ณผ ์œ ์ง€

EMP ํ…Œ์ด๋ธ”์—์„œ 192๋ฒˆ์‚ฌ์›์„ ์ฐพ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…๋‹ˆ๋‹ค. SQL ๋ช…๋ น ์ˆœ์„œ์— ์˜ํ•ด์„œ FROM์ ˆ์ด ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ…Œ์ด๋ธ”์ด ์œ„์น˜ํ•ด์žˆ๋Š” TABLESPACE์— ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ BLOCK์„ ์ฐพ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ด๋•Œ  EMP ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์— ๋”ฐ๋ผ BLOCK์˜ ์ˆ˜๋„ ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 100๊ฐœ์˜ ๋ธ”๋ก์ด ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด EMPํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์™€ ๋นˆ ๋ธ”๋ก์ด ํ•จ๊ป˜ ๊ณต์กดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์–˜๊ธฐ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด EMP ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฝ๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ฒ˜๋ฆฌ๊ณผ์ •์ด ์ง„ํ–‰๋ ๊นŒ์š”?

 

 

High Water Mark

ํ…Œ์ด๋ธ” SEGMENT์˜ ์ฒซ๋ฒˆ์งธ HEADER BLOCK์—๋Š” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘์—์„œ HIGH WATER MARK๋ผ๋Š” ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ•์˜ ์ตœ๊ณ ์ˆ˜์œ„๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ์›๋ฆฌ ์ž…๋‹ˆ๋‹ค.

 

1๋…„์ค‘ ์ตœ๊ณ ์ˆ˜์œ„๋Š” ์ตœ๊ณ  ๊ธฐ๋ก์„ ๊ฐฑ์‹ ํ•˜์ง€ ์•Š๋Š”ํ•œ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „ ์ตœ๊ณ  ์ˆ˜์œ„๋ณด๋‹ค ๋†’์€ ์ˆ˜์œ„๋ฅผ ๊ธฐ๋กํ•˜๋ฉด ๊ฐ’์ด ๊ฐฑ์‹ ๋˜๊ณ  ๊ทธ์ „๊นŒ์ง€๋Š” ๊ทธ๋Œ€๋กœ ์ตœ๊ณ ๊ธฐ๋ก์ด ๋‚จ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ 1๋…„์ค‘์—๋Š” ์ตœ๊ณ ์ˆ˜์œ„๊ฐ€ ๋‚ฎ์•„์ง€์ง€ ์•Š๊ณ  ๋†’์•„์ง€๊ธฐ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

 

ORACLE์˜ HIGH WATER MARK๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ๋„ฃ์œผ๋ฉด HIGH WATER MARK๋Š” ๊ณ„์† ๋†’์•„์ง‘๋‹ˆ๋‹ค.

 

DELETE : ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด๋„ HIGH WATER MARK๋Š” ๊ทธ๋Œ€๋กœ

TRUNCATE : ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด HIGH WATER MARK ํ•ด์ œ

 

์ฆ‰, DELETE๋กœ 100๋งŒ๊ฑด์„ ์‚ญ์ œํ•ด์„œ 1๊ฑด์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ์•„๋„ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ• ๋•Œ๋Š” 100๋งŒ๊ฑด ์ „์ฒด๋ฅผ ์กฐํšŒํ• ๋–„๋ž‘ ์†๋„์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, TRUNCATE์€ HIGH WATER MARK๋ฅผ ํ•ด์ œํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ–ˆ์„ ๋•Œ ์ฐจ์ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€