๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Database·SQL

DBMS์™€ ๊ธฐ์–ต์žฅ์น˜์˜ ๊ด€๊ณ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ

by Leica 2021. 9. 28.
๋ฐ˜์‘ํ˜•

 

<DBMS์™€ ๊ธฐ์–ต์žฅ์น˜์˜ ๊ด€๊ณ„>

๊ธฐ์–ต์žฅ์น˜๋Š” ๊ธฐ์–ต ๋น„์šฉ์— ๋”ฐ๋ผ 1์ฐจ~3์ฐจ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์–ต ๋น„์šฉ์ด๋ž€ '๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์†Œ๋ชจ๋˜๋Š” ๋น„์šฉ'์ด๋‹ค.

 

๊ทธ๋ฆผ - ๊ธฐ์–ต์žฅ์น˜์˜ ๊ณ„์ธต

 

๊ทธ๋ฆผ์˜ ํ”ผ๋ผ๋ฏธ๋“œ์—์„œ ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ๋ฉด์ ์ด ์ปค์ง€๋Š” ๊ฒƒ์€ ๊ฐ™์€ ๋น„์šฉ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰์ด ํฌ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์–ต ๋น„์šฉ์ด ๋‚ฎ์„์ˆ˜๋ก ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.

๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค ํ•˜๋ฉด ์†๋„๋ฅผ ์žƒ๊ณ , ์†๋„๋ฅผ ์–ป๊ณ ์ž ํ•˜๋ฉด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ํž˜๋“ค๋‹ค๋Š” ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

DBMS๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด์ด๋ฏ€๋กœ ๊ธฐ์–ต์žฅ์น˜์™€ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค. DBMS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์–ต์žฅ์น˜๋Š” HDD(ํ•˜๋“œ๋””์Šคํฌ), ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.

์šฉ๋Ÿ‰, ๋น„์šฉ, ์„ฑ๋Šฅ์ƒ์˜ ์ด์ ๋•Œ๋ฌธ์— DBMS์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋งค์ฒด๋กœ HDD๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

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

 

<DBMS์˜ ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ>

DBMS๋Š” HDD์™€ ๊ฐ™์€ ๋””์Šคํฌ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด, ์ฆ‰ SQL ๊ตฌ๋ฌธ ์‹คํ–‰ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค ๊ฐ™์€ SQL ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ SQL ๊ตฌ๋ฌธ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€ ์ €์žฅ์†Œ I/O์— ์‚ฌ์šฉ๋˜๊ธฐ์— ๋””์Šคํฌ ์ ‘๊ทผ์„ ์ค„์ด๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ํฐ ๋„์›€์ด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ณ ์† ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฒ„ํผ ๋˜๋Š” ์บ์‹œ๋ผ ํ•˜๋ฉฐ DBMS ๊ตฌ์„ฑ์š”์†Œ ์ค‘ ๋ฒ„ํผ ๋งค๋‹ˆ์ €๊ฐ€ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ, ์–ด๋Š ์ •๋„์˜ ๊ธฐ๊ฐ„ ๋™์•ˆ ์˜ฌ๋ฆด์ง€๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

DBMS์˜ ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ์ฟผ๋ฆฌ ํ‰๊ฐ€ ์—”์ง„๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ฑ๋Šฅ์— ์•„์ฃผ ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

 

- ๋ฐ์ดํ„ฐ ์บ์‹œ์™€ ๋กœ๊ทธ ๋ฒ„ํผ

DBMS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ํฌ๊ฒŒ ๋ฐ์ดํ„ฐ ์บ์‹œ, ๋กœ๊ทธ ๋ฒ„ํผ๋กœ ๋‚˜๋‰œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ DBMS๋Š” ์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ค์Œ ํ‘œ๋Š” Oracle, PostgreSQL, MySQL์˜ ํŠน์ • ๋ฒ„์ „ ๋ณ„ ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด์ด๋‹ค.

 

ํ‘œ - DBMS ๋ณ„ ๋ฐ์ดํ„ฐ ์บ์‹œ์™€ ๋กœ๊ทธ ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ

    Oracle 11gR2 PostgreSQL 9.3 MySQL 5.7(InnoDB)
๋ฐ์ดํ„ฐ ์บ์‹œ ๋ช…์นญ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„ํผ ์บ์‹œ ๊ณต์œ  ๋ฒ„ํผ ๋ฒ„ํผ ํ’€
๋งค๊ฐœ๋ณ€์ˆ˜ DB_CACHE_SIZE shared_buffers innodb_buffer_pool_size
์ดˆ๊ธฐ๊ฐ’ 5MB * CPU ๊ฐฏ์ˆ˜ * ๊ทธ๋ž˜๋‰ผ ํฌ๊ธฐ(SGA_TARGET์ด ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ 48MB) 128MB 128MB
์„ค์ •๊ฐ’ ํ™•์ธ SELECT value FROM v$parameter WHERE name='db_cache_size' show shared_buffers SHOW VARIABLES LIKE 'innodb_buffer_pool_size'
๋น„๊ณ  SGA ๋‚ด๋ถ€์— ํ™•๋ณด - -
๋กœ๊ทธ ๋ฒ„ํผ ๋ช…์นญ REDO ๋กœ๊ทธ ๋ฒ„ํผ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ ๋ฒ„ํผ ๋กœ๊ทธ ๋ฒ„ํผ
๋งค๊ฐœ๋ณ€์ˆ˜ LOG_BUFFER wal_buffers innodb_log_buffer_size
์ดˆ๊ธฐ๊ฐ’ 512KB ๋˜๋Š” 128KB * CPU_COUNT ์ค‘ ํฐ ๊ฐ’ 64KB 8MB
์„ค์ •๊ฐ’ ํ™•์ธ SELECT value FROM v$parameter WHERE name='log_buffer' show wal_buffers SHOW VARIABLES LIKE 'innodb_log_buffer_size'
๋น„๊ณ  - - InnoDB ์—”์ง„ ์‚ฌ์šฉ ์‹œ์—๋งŒ ์ ์šฉ

 

DBMS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์บ์‹œ, ๋กœ๊ทธ ๋ฒ„ํผ์— ๋Œ€ํ•ด ์ข€ ๋” ์•Œ์•„๋ณด์ž.

๋ฐ์ดํ„ฐ ์บ์‹œ๋Š” ๋””์Šคํฌ์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์˜์—ญ์ด๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์ฟผ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์บ์‹œ์— ์žˆ์œผ๋ฉด ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ์ˆ˜ํ–‰๋˜์–ด ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ์‘๋‹ต๋œ๋‹ค.

 

๋กœ๊ทธ ๋ฒ„ํผ๋Š” INSERT, DELETE, UPDATE์™€ ๊ฐ™์€ ๊ฐฑ์‹  ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค. DBMS๋Š” ๊ฐฑ์‹  SQL ๊ตฌ๋ฌธ์„ ๋ฐ›์œผ๋ฉด ๋ฐ”๋กœ ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ผ๋‹จ ๋กœ๊ทธ ๋ฒ„ํผ์— ๋ณ€๊ฒฝ ์ •๋ณด๋ฅผ ๋ณด๋‚ด๊ณ  ๊ทธ ์ดํ›„ COMMIT ์‹œ ๋กœ๊ทธ ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ๋””์Šคํฌ์— ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐฑ์‹ ์€ SQL ๊ตฌ๋ฌธ์˜ ์‹คํ–‰ ์‹œ์ ๊ณผ ์‹ค์ œ ์ €์žฅ์†Œ์— ๊ฐฑ์‹ ๋˜๋Š” ์‹œ์ ์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

 

- ๋กœ๊ทธ ๋ฒ„ํผ๋Š” ์™œ ์‚ฌ์šฉ๋˜๋Š”๊ฐ€?

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

 

<๋ฉ”๋ชจ๋ฆฌ์˜ ํœ˜๋ฐœ์„ฑ>

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

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

 

โœ๏ธ ์ฐธ๊ณ 
์ผ๋ฐ˜์ ์œผ๋กœ commit ์‹œ์ ์—๋Š” ๋ฌด์กฐ๊ฑด ๋กœ๊ทธ ๋ฒ„ํผ์—์„œ ๋””์Šคํฌ๋กœ ์“ฐ์ด์ง€๋งŒ DBMS์— ๋”ฐ๋ผ ์„ค์ •์„ ๋ณ€๊ฒฝํ• ์ˆ˜๋„ ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด PostgreSQL์€ '๋น„๋™๊ธฐ commit'์ด๋ผ๋Š” ์„ค์ •์ด ์žˆ์–ด commit ์‹œ์ ์—๋„ ๋กœ๊ทธ ๋ฒ„ํผ์—์„œ ๋””์Šคํฌ์— ์“ฐ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ, ์‹ ๋ขฐ์„ฑ์„ ํฌ๊ธฐํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์ถ”๊ตฌํ•˜๋Š” ๊ทน๋‹จ์ ์ธ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„ ์‚ฌ๋ก€์ด๋‹ค.

 

<๋ฐ์ดํ„ฐ ์บ์‹œ์™€ ๋กœ๊ทธ ๋ฒ„ํผ์˜ ํฌ๊ธฐ>

์ผ๋ฐ˜์ ์œผ๋กœ DBMS์˜ ๋กœ๊ทธ ๋ฒ„ํผ๋Š” ๋ฐ์ดํ„ฐ ์บ์‹œ์— ๋น„ํ•ด ์ดˆ๊ธฐ๊ฐ’์ด ๊ต‰์žฅํžˆ ์ž‘๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒ€์ƒ‰(์ฟผ๋ฆฌ)์„ ๋ฉ”์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ• ๋‹น์ด ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ๋ฅผ ํ• ๋•Œ๋Š” ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ˆ˜์ฒœ๋งŒ๊ฑด์— ๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์ง€๋งŒ ๊ฐฑ์‹  ์ฒ˜๋ฆฌ๋ฅผ ํ• ๋•Œ๋Š” ๊ฐฑ์‹  ๋Œ€์ƒ์ด ๋งŽ์•„๋ดค์ž ํŠธ๋žœ์žญ์…˜๋‹น ํ•œ ๊ฑด ~ ์ˆ˜๋งŒ ๊ฑด ์ •๋„์ด๋‹ค.

์‹ค์ œ๋กœ ๋งŽ์€ DBMS๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ๊ฐ€๋Šฅํ•œ ํฌ๊ฒŒ ํ• ๋‹นํ•  ๊ฒƒ์„ ์ถ”์ฒœํ•˜๊ณ  ์žˆ๋‹ค.

๋งŒ์•ฝ ์šด์˜ํ•˜๋Š” ์‹œ์Šคํ…œ์ด ๊ฒ€์ƒ‰์— ๋น„ํ•ด ๊ฐฑ์‹ ์ด ๋งŽ๋‹ค๋ฉด ์ดˆ๊ธฐ ์„ค์ •์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๋กœ๊ทธ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์ฃผ๋Š” ํŠœ๋‹์„ ๊ณ ๋ คํ•ด๋ด์•ผ ํ•œ๋‹ค.

๋˜ํ•œ ์šด์˜์ค‘์ธ ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋กœ๊ทธ ๋ฒ„ํผ๊ฐ€ ํฌ๊ฒŒ ์žกํ˜€์žˆ๋‹ค๋ฉด ๊ฐฑ์‹  ์ฒ˜๋ฆฌ๋ฅผ ์šฐ์„  ๊ณ ๋ คํ•œ ์„ค๊ณ„์ž„์„, ๋ฐ˜๋Œ€๋กœ ๋ฐ์ดํ„ฐ ์บ์‹œ๊ฐ€ ํฌ๊ฒŒ ์žกํ˜€์žˆ๋‹ค๋ฉด ๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์‹ฌ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

<์›Œํ‚น ๋ฉ”๋ชจ๋ฆฌ>

DBMS๋Š” ๋ฐ์ดํ„ฐ ์บ์‹œ, ๋กœ๊ทธ ๋ฒ„ํผ ์™ธ์—๋„ ์›Œํ‚น ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ•˜๋‚˜ ๋” ๊ฐ–๋Š”๋‹ค. ์ด๋Š” ์ •๋ ฌ, ํ•ด์‹œ ๊ด€๋ จ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ์ด๋‹ค.

์ •๋ ฌ์€ ORDER BY, ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ์‹คํ–‰๋˜๊ณ  ํ•ด์‹œ๋Š” ์ฃผ๋กœ ํ…Œ์ด๋ธ”์˜ ๊ฒฐํ•ฉ์—์„œ ํ•ด์‹œ ๊ฒฐํ•ฉ์ด ์‚ฌ์šฉ๋  ๋•Œ, GROUP BY๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‹คํ–‰๋œ๋‹ค.

 

ํ‘œ - DBMS ๋ณ„ ์›Œํ‚น ๋ฉ”๋ชจ๋ฆฌ

DBMS ๋ช…์นญ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’
Oracle 11g R2 PGA(Program Global Area) PGA_AGGREGATE_TARGET 10MB ๋˜๋Š” SGA ํฌ๊ธฐ์˜ 20% ์ค‘ ํฐ ๊ฐ’
PostgreSQL 9.3 ์›Œํฌ ๋ฒ„ํผ work_mem 8MB
MySQL 5.7 ์ •๋ ฌ ๋ฒ„ํผ sort_buffer_size 256KB

 

์›Œํ‚น ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ •๋ ฌ ๋˜๋Š” ํ•ด์‹œ๊ฐ€ ํ•„์š”ํ• ๋•Œ ์‚ฌ์šฉ๋˜๊ณ  ์ข…๋ฃŒ๋˜๋ฉด ํ•ด์ œ๋˜๋Š” ์ž„์‹œ ์˜์—ญ์ด๋‹ค. ๋งŒ์•ฝ ์ด ์˜์—ญ์ด ๋‹ค๋ฃจ๋ ค๋Š” ๋ฐ์ดํ„ฐ ์–‘๋ณด๋‹ค ์ž‘์•„ ๋ถ€์กฑํ•ด์ง€๋ฉด ๋Œ€๋ถ€๋ถ„์˜ DBMS๊ฐ€ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ DBMS๋Š” ์ €์žฅ์†Œ ์•ˆ์— ์›Œํ‚น ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ์˜์—ญ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ํ•ด๋‹น ์˜์—ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋ถ€๋ฅธ๋‹ค.

 

  • Oracle: TEMP Tablespace
  • Microsoft SQL Server: TEMPDB
  • PostgreSQL: pgsql_tmp

 

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

 

DBMS์˜ ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋”๋ผ๋„ ์ „๋‹ฌ๋ฐ›์€ SQL ๊ตฌ๋ฌธ์„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ๊ณ„์†์„ฑ์„ ๋‹ด๋ณดํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

 

๐Ÿ“š ์ฐธ๊ณ  ์„œ์ 

  • SQL ๋ ˆ๋ฒจ์—…

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€