MS SQL Server: ๊ฐ•๋ ฅํ•œ ๋ฐฑ์—…

๊ธฐ๋‹ค๋ฆฌ๋‹ค! ๊ธฐ๋‹ค๋ฆฌ๋‹ค! ์‚ฌ์‹ค, ์ด๊ฒƒ์€ SQL Server ๋ฐฑ์—… ์œ ํ˜•์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ธฐ์‚ฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ณต๊ตฌ ๋ชจ๋ธ์˜ ์ฐจ์ด์ ๊ณผ ๋„ˆ๋ฌด ์ž๋ž€ ๋กœ๊ทธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ (์•„๋งˆ๋„) ์ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์€ ํ›„ ํ‘œ์ค€ ์ˆ˜๋‹จ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ฑฐ๋œ ๋ฐฑ์—…์ด ๋‚ด์ผ ๋ฐค 1.5๋ฐฐ ๋” ๋น ๋ฅด๊ฒŒ ์ œ๊ฑฐ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  BACKUP DATABASE ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ๊ธˆ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ธ€์˜ ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋ป”ํ–ˆ๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” "habr SQL Server ๋ฐฑ์—…"์ด๋ผ๋Š” ๋ฌธ๊ตฌ์— ๋Œ€ํ•ด Google์—์„œ ์ฐพ์€ ๋ชจ๋“  ๊ฒƒ์„ ์ฝ์—ˆ์œผ๋ฉฐ ๋‹จ์ผ ๊ธฐ์‚ฌ์—์„œ ๋ฐฑ์—… ์‹œ๊ฐ„์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ๋“  ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•œ ์–ธ๊ธ‰์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

Alexander Gladchenko์˜ ์˜๊ฒฌ์— ์ฆ‰์‹œ ์ฃผ๋ชฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.@mssqlhelp):

ํ”„๋กœ๋•์…˜์—์„œ๋Š” BUFFERCOUNT, BLOCKSIZE, MAXTRANSFERSIZE ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌํ•œ ๊ธฐ์‚ฌ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋งŒ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๊ฐ€์žฅ ๋˜‘๋˜‘ํ•˜๊ณ  ๋…์ ์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์€ ๋ฉ‹์ง„ ์ผ์ด์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ์— ๊ด€ํ•œ ์˜์–ด ๋ฐ ๋Ÿฌ์‹œ์•„์–ด ๊ธฐ์‚ฌ/๊ฒŒ์‹œ๋ฌผ์ด ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค(์ €๋Š” ํ•ญ์ƒ ์ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์•ผ ํ• ์ง€ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค). ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๊ฒƒ ์ค‘ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„, ะดะฒะฐ, XNUMX๊ฐœ(sql.ru์—์„œ).

๊ทธ๋ž˜์„œ ์šฐ์„  ๋‹ค์Œ์—์„œ ์•ฝ๊ฐ„ ๋‹จ์ˆœํ™”๋œ BACKUP ๊ตฌ๋ฌธ์„ ์ฒจ๋ถ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. MSDN (๊ทธ๋Ÿฐ๋ฐ ์œ„์—์„œ BACKUP DATABASE์— ๋Œ€ํ•ด ์ผ์ง€๋งŒ ์ด ๋ชจ๋“  ๋‚ด์šฉ์€ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ ๋ฐฑ์—…๊ณผ ์ฐจ๋“ฑ ๋ฐฑ์—… ๋ชจ๋‘์— ์ ์šฉ๋˜์ง€๋งŒ ํšจ๊ณผ๋Š” ๋œ ๋ถ„๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

BACKUP DATABASE { database_name | @database_name_var }
  TO <backup_device> [ ,...n ]
  <...>
  [ WITH { <...>
           | <general_WITH_options> [ ,...n ] } ]
[;]

<general_WITH_options> [ ,...n ]::=
<...>
--Media Set Options
 <...>
 | BLOCKSIZE = { blocksize | @blocksize_variable }

--Data Transfer Options
   BUFFERCOUNT = { buffercount | @buffercount_variable }
 | MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
<...>

<โ€ฆ> - ๋ญ”๊ฐ€๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ๋œป์ธ๋ฐ, ์ง€๊ธˆ์€ ์ฃผ์ œ์™€ ๊ด€๋ จ์ด ์—†์–ด ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.

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

BACKUP DATABASE smth
TO DISK = 'D:Backupsmth.bak'
WITH STATS = 10, CHECKSUM, COMPRESSION, COPY_ONLY;
--ะปะฐะดะฝะพ, CHECKSUM ั ะฝะฐะฟะธัะฐะป ั‚ะพะปัŒะบะพ ั‡ั‚ะพะฑั‹ ะบะฐะทะฐั‚ัŒัั ัƒะผะฝะตะต

๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฑ์—…์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์–ธ๊ธ‰๋˜๋Š” ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜์˜ 75-90%๊ฐ€ ์—ฌ๊ธฐ์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์Œ, INIT, SKIP๋„ ์žˆ์Šต๋‹ˆ๋‹ค. MSDN์„ ๋ฐฉ๋ฌธํ•ด ๋ณด์…จ๋‚˜์š”? ํ™”๋ฉด XNUMX๊ฐœ์— ๋Œ€ํ•œ ์˜ต์…˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์…จ๋‚˜์š”? ๋‚˜๋„ ๋ดค๋Š”๋ฐ...

์•„๋งˆ๋„ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ ๋ธ”๋ก์— ๋‚จ์•„ ์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ BLOCKSIZE, BUFFERCOUNT ๋ฐ MAXTRANSFERSIZE์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ๊ฒƒ์ž„์„ ์ด๋ฏธ ์•Œ๊ณ  ๊ณ„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. MSDN์˜ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ธ”๋ก ํฌ๊ธฐ = { ๋ธ”๋ก ํฌ๊ธฐ | @ ๋ธ”๋ก ํฌ๊ธฐ_๋ณ€์ˆ˜ } - ๋ฌผ๋ฆฌ์  ๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ํฌ๊ธฐ๋Š” 512, 1024, 2048, 4096, 8192, 16, 384 ๋ฐ 32๋ฐ”์ดํŠธ(768KB)์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ํ…Œ์ดํ”„ ์žฅ์น˜์˜ ๊ฒฝ์šฐ 65์ด๊ณ  ๊ธฐํƒ€ ์žฅ์น˜์˜ ๊ฒฝ์šฐ 536์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ BACKUP ๋ฌธ์ด ์žฅ์น˜์— ์ ํ•ฉํ•œ ๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•˜๋ฏ€๋กœ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ž๋™ ๋ธ”๋ก ํฌ๊ธฐ ์„ ํƒ์ด ๋ช…์‹œ์ ์œผ๋กœ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„ํผ์นด์šดํŠธ = { ๋ฒ„ํผ ์ˆ˜ | @ buffercount_๋ณ€์ˆ˜ } - ๋ฐฑ์—… ์ž‘์—…์— ์‚ฌ์šฉ๋  ์ด I/O ๋ฒ„ํผ ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์–‘์˜ ์ •์ˆ˜ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฒ„ํผ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด Sqlservr.exe ํ”„๋กœ์„ธ์Šค์˜ ๊ณผ๋„ํ•œ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์œผ๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํผ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ด ๊ณต๊ฐ„๋Ÿ‰์€ ๋‹ค์Œ ๊ณต์‹์œผ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. BUFFERCOUNT * MAXTRANSFERSIZE.

์ตœ๋Œ€ ์ „์†ก ํฌ๊ธฐ = { ์ตœ๋Œ€ ์ „์†ก ํฌ๊ธฐ | @ ์ตœ๋Œ€ ์ „์†ก ํฌ๊ธฐ_๋ณ€์ˆ˜ }๋Š” SQL Server์™€ ๋ฐฑ์—… ์„ธํŠธ ๋ฏธ๋””์–ด ๊ฐ„์— ๊ตํ™˜ํ•  ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ ํŒจํ‚ท ํฌ๊ธฐ(๋ฐ”์ดํŠธ)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 65๋ฐ”์ดํŠธ(536KB)๋ถ€ํ„ฐ ์ตœ๋Œ€ 64๋ฐ”์ดํŠธ(4MB)์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

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

10GB ์ •๋„์˜ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด SSD์— ๋„ฃ๊ณ , ๋ฐฑ์—…์šฉ ๋””๋ ‰ํ† ๋ฆฌ๋Š” HDD์— ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค(์ž„์‹œ ํ…Œ์ด๋ธ”์ด ์—†์œผ๋ฏ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค).

DROP TABLE IF EXISTS ##bt_results; 

CREATE TABLE ##bt_results (
    id              int IDENTITY (1, 1) PRIMARY KEY,
    start_date      datetime NOT NULL,
    finish_date     datetime NOT NULL,
    backup_size     bigint NOT NULL,
    compressed_size bigint,
    block_size      int,
    buffer_count    int,
    transfer_size   int
);

์Šคํฌ๋ฆฝํŠธ์˜ ์›๋ฆฌ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ค‘์ฒฉ ๋ฃจํ”„, BACKUP ๋ช…๋ น์— ์ด๋Ÿฌํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์‚ฝ์ž…, msdb.dbo.backupset์˜ ๊ธฐ๋ก๊ณผ ํ•จ๊ป˜ ๋งˆ์ง€๋ง‰ ๋ ˆ์ฝ”๋“œ ์ €์žฅ, ๋ฐฑ์—… ํŒŒ์ผ ์‚ญ์ œ ๋ฐ ๋‹ค์Œ ๋ฐ˜๋ณต์ž…๋‹ˆ๋‹ค. . ๋ฐฑ์—… ์‹คํ–‰ ๋ฐ์ดํ„ฐ๋Š” ๋ฐฑ์—… ์„ธํŠธ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•๋„๊ฐ€ ๋‹ค์†Œ ๋–จ์–ด์ง€์ง€๋งŒ(์ดˆ ๋‹จ์œ„๋Š” ์—†์Œ) ์ด ์ •๋„๋Š” ๊ฒฌ๋”œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜๋ ค๋ฉด xp_cmdshell์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค).

EXEC sp_configure 'show advanced options', 1;  
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;  
GO

๊ธ€์Ž„ ์‚ฌ์‹ค:

DECLARE @tmplt AS nvarchar(max) = N'
BACKUP DATABASE [bt]
TO DISK = ''D:SQLServerbackupbt.bak''
WITH 
    COMPRESSION,
    BLOCKSIZE = {bs},
    BUFFERCOUNT = {bc},
    MAXTRANSFERSIZE = {ts}';

DECLARE @sql AS nvarchar(max);

/* BLOCKSIZE values */
DECLARE @bs     int = 4096, 
        @max_bs int = 65536;

/* BUFFERCOUNT values */
DECLARE @bc     int = 7,
        @min_bc int = 7,
        @max_bc int = 800;

/* MAXTRANSFERSIZE values */
DECLARE @ts     int = 524288,   --512KB, default = 1024KB
        @min_ts int = 524288,
        @max_ts int = 4194304;  --4MB

SELECT TOP 1 
    @bs = COALESCE (block_size, 4096), 
    @bc = COALESCE (buffer_count, 7), 
    @ts = COALESCE (transfer_size, 524288)
FROM ##bt_results
ORDER BY id DESC;

WHILE (@bs <= @max_bs)
BEGIN
    WHILE (@bc <= @max_bc)
    BEGIN       
        WHILE (@ts <= @max_ts)
        BEGIN
            SET @sql = REPLACE (REPLACE (REPLACE(@tmplt, N'{bs}', CAST(@bs AS nvarchar(50))), N'{bc}', CAST (@bc AS nvarchar(50))), N'{ts}', CAST (@ts AS nvarchar(50)));

            EXEC (@sql);

            INSERT INTO ##bt_results (start_date, finish_date, backup_size, compressed_size, block_size, buffer_count, transfer_size)
            SELECT TOP 1 backup_start_date, backup_finish_date, backup_size, compressed_backup_size,  @bs, @bc, @ts 
            FROM msdb.dbo.backupset
            ORDER BY backup_set_id DESC;

            EXEC xp_cmdshell 'del "D:SQLServerbackupbt.bak"', no_output;

            SET @ts += @ts;
        END
        
        SET @bc += @bc;
        SET @ts = @min_ts;

        WAITFOR DELAY '00:00:05';
    END

    SET @bs += @bs;
    SET @bc = @min_bc;
    SET @ts = @min_ts;
END

์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๊ฐ‘์ž๊ธฐ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋ฉด ๋Œ“๊ธ€์ด๋‚˜ PM์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์ง€๊ธˆ์€ BACKUP DATABASE์— ๋„ฃ์€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋งŒ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

BLOCKSIZE์˜ ๊ฒฝ์šฐ "๋‹ซํžŒ" ๊ฐ’ ๋ชฉ๋ก์ด ์žˆ์œผ๋ฉฐ BLOCKSIZE < 4KB๋กœ ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. MAXTRANSFERSIZE๋Š” 64KB์˜ ๋ฐฐ์ˆ˜(64KB์—์„œ 4MB๊นŒ์ง€)์ธ ๋ชจ๋“  ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ๋‚ด ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1024KB์ด๋ฉฐ 512 - 1024 - 2048 - 4096์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

BUFFERCOUNT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์–‘์ˆ˜์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋งํฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. BACKUP DATABASE์—์„œ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํฐ ๊ฐ’์ด ์œ„ํ—˜ํ•œ ์ด์œ . ๋˜ํ•œ ๋ฐฑ์—…์ด ์‹ค์ œ๋กœ ์–ด๋–ค BUFFERCOUNT๋กœ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•๋„ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” 7์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ค„์ผ ํ•„์š”๊ฐ€ ์—†์—ˆ๊ณ  ์ƒํ•œ์„ ์€ ์‹คํ—˜์ ์œผ๋กœ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. BUFFERCOUNT = 896 ๋ฐ MAXTRANSFERSIZE = 4194304๋กœ ๋ฐฑ์—…์ด ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜(์œ„ ๋งํฌ์— ๊ธฐ๋ก๋˜์–ด ์žˆ์Œ):

๋ฉ”์‹œ์ง€ 3013, ์ˆ˜์ค€ 16, ์ƒํƒœ 1, ์ค„ 7 BACKUP DATABASE๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ 701, ์ˆ˜์ค€ 17, ์ƒํƒœ 123, ์ค„ 7 ์ด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์—๋Š” '๊ธฐ๋ณธ' ๋ฆฌ์†Œ์Šค ํ’€์˜ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ต๋ฅผ ์œ„ํ•ด ๋จผ์ € ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „ํ˜€ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ๋ฐฑ์—…์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

BACKUP DATABASE [bt]
TO DISK = 'D:SQLServerbackupbt.bak'
WITH COMPRESSION;

์Œ, ๋ฐฑ์—… ๋ฐ ๋ฐฑ์—…:

ํŒŒ์ผ 1070072์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'bt', ํŒŒ์ผ 'bt'์— ๋Œ€ํ•ด 1 ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ 2์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'bt', ํŒŒ์ผ 'bt_log'์— ๋Œ€ํ•ด 1ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

BACKUP DATABASE๋Š” 1070074์ดˆ(53.171MB/์ดˆ) ๋งŒ์— 157.227ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๋Š” ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์— ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ธก์ •์€ ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— ์„ธ ๊ฐ€์ง€ ์ตœ๊ณ ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ํฌํ•จ๋œ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์ข‹์€ ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” ํ‘œ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ณ  ๋Œ“๊ธ€์—์„œ๋Š” @mixsture ์ถ”๊ฐ€ ๋œ ์•„์ฃผ ๋ฉ‹์ง„ ๊ทธ๋ž˜ํ”ฝ).

SELECT TOP 7 WITH TIES 
    compressed_size, 
    block_size, 
    buffer_count, 
    transfer_size,
    DATEDIFF(SECOND, start_date, finish_date) AS backup_time_sec
FROM ##bt_results
ORDER BY backup_time_sec ASC;

MS SQL Server: ๊ฐ•๋ ฅํ•œ ๋ฐฑ์—…

์ฃผ์˜, ๋งค์šฐ ์ค‘์š”ํ•œ ๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค. @mixsture ์œผ๋กœ ์˜๊ฒฌ:

์ด๋Ÿฌํ•œ ๊ฐ’ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐฑ์—… ์†๋„ ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ๋ฌด์ž‘์œ„์ด๋ฉฐ ํŒจํ„ด์ด ์—†๋‹ค๊ณ  ์ž์‹ ์žˆ๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด์žฅ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๊ฒฐ๊ณผ์— ์ข‹์€ โ€‹โ€‹์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.

์ €๊ฒƒ๋“ค. ํ‘œ์ค€ BACKUP ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ๋งŒ ๋ฐฑ์—… ์ œ๊ฑฐ ์‹œ๊ฐ„์ด 2๋ฐฐ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์—๋Š” 26์ดˆ์˜€์ง€๋งŒ 53์ดˆ์˜€์Šต๋‹ˆ๋‹ค. ๋‚˜์˜์ง€ ์•Š์ฃ ? ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ณต์› ๊ณผ์ •์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ง€์ผœ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ณต๊ตฌํ•˜๋Š” ๋ฐ 4๋ฐฐ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

๋จผ์ € ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋ฐฑ์—…์„ ๋ณต์›ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

RESTORE DATABASE [bt]
FROM DISK = 'D:SQLServerbackupbt.bak'
WITH REPLACE, RECOVERY;

๊ธ€์Ž„, ๋‹น์‹ ์€ ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ  ๊ต์ฒด๊ฐ€ ๊ต์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋ณต๊ตฌ๊ฐ€ ๋ณต๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

ํŒŒ์ผ 1070072์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'bt', ํŒŒ์ผ 'bt'์— ๋Œ€ํ•ด 1 ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ 2์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'bt', ํŒŒ์ผ 'bt_log'์— ๋Œ€ํ•ด 1ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

RESTORE DATABASE๋Š” 1070074์ดˆ(40.752MB/์ดˆ) ๋งŒ์— 205.141ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ BLOCKSIZE, BUFFERCOUNT ๋ฐ MAXTRANSFERSIZE๊ฐ€ ๋ณ€๊ฒฝ๋œ ๋ฐฑ์—…์„ ๋ณต์›ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

BLOCKSIZE = 16384, BUFFERCOUNT = 224, MAXTRANSFERSIZE = 4194304

RESTORE DATABASE๋Š” 1070074์ดˆ(32.283MB/์ดˆ) ๋งŒ์— 258.958ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

BLOCKSIZE = 4096, BUFFERCOUNT = 448, MAXTRANSFERSIZE = 4194304

RESTORE DATABASE๋Š” 1070074์ดˆ(32.682MB/์ดˆ) ๋งŒ์— 255.796ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

BLOCKSIZE = 16384, BUFFERCOUNT = 448, MAXTRANSFERSIZE = 2097152

RESTORE DATABASE๋Š” 1070074์ดˆ(32.091MB/์ดˆ) ๋งŒ์— 260.507ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

BLOCKSIZE = 4096, BUFFERCOUNT = 56, MAXTRANSFERSIZE = 4194304

RESTORE DATABASE๋Š” 1070074์ดˆ(32.401MB/์ดˆ) ๋งŒ์— 258.015ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

RESTORE DATABASE ๋ฌธ์€ ๋ณต๊ตฌ ์ค‘์— ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์—ฌ๊ธฐ์— ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉฐ SQL Server ์ž์ฒด๊ฐ€ ๋ฐฑ์—…์—์„œ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํšŒ๋ณต ํ›„์—๋„ ๊ฑฐ์˜ 20% ๋” ๋น ๋ฅธ ์ด๋“์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค(์†”์งํžˆ ๋งํ•ด์„œ ๋ณต๊ตฌ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜์ง€ ์•Š์•˜๊ณ  "๊ฐ€์žฅ ๋น ๋ฅธ" ๋ฐฑ์—…์„ ์—ฌ๋Ÿฌ ๊ฐœ ์‹คํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.).

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

๋˜ํ•œ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ค๋ช…์„œ ์ „์ฒด๋ฅผ ์ฝ์–ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฐฑ์—…์— ๋Œ€ํ•ด ์“ฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— "์กฐ์ •" ๋งค๊ฐœ๋ณ€์ˆ˜๋ณด๋‹ค ๋” ์ผ๋ฐ˜์ ์ธ ํ•˜๋‚˜ ์ด์ƒ์˜ "์ตœ์ ํ™”"์— ๋Œ€ํ•ด ์ฆ‰์‹œ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ ์„ค๋ช…), Habrรฉ์—์„œ๋„ ์•„์ง ์„ค๋ช…๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

BACKUP DATABASE ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ๋‘ ๋ฒˆ์งธ ์ค„์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

TO <backup_device> [ ,...n ]

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

๋™์ผํ•œ ํด๋”์— ๋‚˜๋ž€ํžˆ ์œ„์น˜ํ•œ ๋‘ ๊ฐœ์˜ "์žฅ์น˜"์— ๋ฐฑ์—…์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

BACKUP DATABASE [bt]
TO 
    DISK = 'D:SQLServerbackupbt1.bak',
    DISK = 'D:SQLServerbackupbt2.bak'   
WITH COMPRESSION;

์„ธ๊ณ„์˜ ์•„๋ฒ„์ง€๋“ค์ด์—ฌ, ์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ํŒŒ์ผ 1070072์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'bt', ํŒŒ์ผ 'bt'์— ๋Œ€ํ•ด 1 ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'bt', ํŒŒ์ผ 'bt'์— ๋Œ€ํ•ด 2ํŽ˜์ด์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.ํŒŒ์ผ 1์— '๋กœ๊ทธ'๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

BACKUP DATABASE๋Š” 1070074์ดˆ(40.092MB/์ดˆ) ๋งŒ์— 208.519ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ‘์ž๊ธฐ ๋ฐฑ์—… ์†๋„๊ฐ€ 25% ๋นจ๋ผ์กŒ์Šต๋‹ˆ๊นŒ? ์žฅ์น˜๋ฅผ ๋ช‡ ๊ฐœ ๋” ์ถ”๊ฐ€ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

BACKUP DATABASE [bt]
TO 
    DISK = 'D:SQLServerbackupbt1.bak',
    DISK = 'D:SQLServerbackupbt2.bak',
    DISK = 'D:SQLServerbackupbt3.bak',
    DISK = 'D:SQLServerbackupbt4.bak'
WITH COMPRESSION;

BACKUP DATABASE๋Š” 1070074์ดˆ(34.234MB/์ดˆ) ๋งŒ์— 244.200ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ด์ œ ์ด ํ–‰๋ณต์„ ํšŒ๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ์‹œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ณต๊ตฌ ๋ช…๋ น์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ชจ๋“  ์žฅ์น˜๋ฅผ ๋‚˜์—ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RESTORE DATABASE [bt]
FROM 
    DISK = 'D:SQLServerbackupbt1.bak',
    DISK = 'D:SQLServerbackupbt2.bak',
    DISK = 'D:SQLServerbackupbt3.bak',
    DISK = 'D:SQLServerbackupbt4.bak'
WITH REPLACE, RECOVERY;

RESTORE DATABASE๋Š” 1070074์ดˆ(38.027MB/์ดˆ) ๋งŒ์— 219.842ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

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

Trace Flags 3213, 3605๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œ๋œ ๋ฐฑ์—… ์ •๋ณด๋ฅผ ๋กœ๊ทธ์—์„œ ์‚ดํŽด๋ณด๋ฉด ์—ฌ๋Ÿฌ ์žฅ์น˜์— ๋ฐฑ์—…ํ•  ๋•Œ ์ ์–ด๋„ BUFFERCOUNT ๊ฐœ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ BUFFERCOUNT, BLOCKSIZE, MAXTRANSFERSIZE์— ๋Œ€ํ•ด ๋” ์ตœ์ ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฆ‰์‹œ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๊ฒŒ์œผ๋ฅธ๋ฐ ํŒŒ์ผ ์ˆ˜๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ”ํ€ด๊ฐ€ ์•„์‰ฝ๋„ค์š”. ์ง‘์—์„œ ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

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

๊ท€ํ•˜๊ฐ€ ํ•˜๋Š” ๋ชจ๋“  ์ผ์€ ๊ท€ํ•˜ ์ž์‹ ์˜ ์œ„ํ—˜๊ณผ ์œ„ํ—˜์— ๋”ฐ๋ผ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๋ฐฑ์—…์„ ํ™•์ธํ•˜๊ณ  DBCC CHECKDB๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€