MS SQL አገልጋይ: በስቴሮይድ ላይ ምትኬ

ጠብቅ! ጠብቅ! እውነት ነው፣ ይህ ስለ SQL አገልጋይ የመጠባበቂያ አይነቶች ሌላ መጣጥፍ አይደለም። በመልሶ ማግኛ ሞዴሎች መካከል ስላለው ልዩነት እና ከመጠን በላይ ሎግ እንዴት መቋቋም እንደሚቻል እንኳን አልናገርም.

ምናልባት (ምናልባት ብቻ) ፣ ይህንን ጽሑፍ ካነበቡ በኋላ ፣ መደበኛ መንገዶችን በመጠቀም ከእርስዎ የተወገደው መጠባበቂያ ነገ ምሽት ፣ ጥሩ ፣ 1.5 ጊዜ በፍጥነት እንደሚወገድ ማረጋገጥ ይችላሉ። እና ትንሽ ተጨማሪ የመጠባበቂያ ዳታባሴ መለኪያዎችን ስለተጠቀሙ ብቻ።

የልጥፉ ይዘት ለእርስዎ ግልጽ ከሆነ፣ አዝናለሁ። Google ያገኘውን ሁሉ "habr sql አገልጋይ መጠባበቂያ" ለሚለው ሐረግ አነበብኩ፣ እና በአንድ መጣጥፍ ውስጥ የመጠባበቂያ ጊዜ በሆነ መንገድ መለኪያዎችን በመጠቀም ተጽዕኖ ሊኖረው እንደሚችል የሚገልጽ ነገር አላገኘሁም።

ወዲያውኑ ወደ አሌክሳንደር ግላድቼንኮ አስተያየት ትኩረት እሰጣለሁ (@mssql እገዛ):

በምርት ውስጥ የBUFFERCOUNT፣ BLOCKSIZE፣ MAXTRANSFERSIZE መለኪያዎችን በጭራሽ አይቀይሩ። እንደዚህ ያሉ ጽሑፎችን ለመጻፍ ብቻ የተሰሩ ናቸው. በተግባር, በአጭር ጊዜ ውስጥ የማስታወስ ችግሮችን ያስወግዳሉ.

በእርግጥ በጣም ብልህ መሆን እና ልዩ ይዘትን መለጠፍ ጥሩ ይሆናል፣ ግን በሚያሳዝን ሁኔታ ይህ እንደዛ አይደለም። በዚህ ርዕስ ላይ ያተኮሩ ሁለቱም የእንግሊዝኛ ቋንቋ እና የሩሲያ ቋንቋ መጣጥፎች / ልጥፎች (በእርግጥ ምን እንደምጠራቸው ሁልጊዜ ግራ ይገባኛል)። ካጋጠሙኝ ጥቂቶቹ እነሆ፡- ጊዜ, два, ሶስት (በ 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፣ ዝለልም አለ። MSDNን ጎብኝተዋል? ለአንድ ተኩል ማያ ገጽ አማራጮች እንዳሉ አይተሃል? እኔም አየሁ ...

በኮዱ የመጀመሪያ ብሎክ ውስጥ ስለቀሩት ሶስት መመዘኛዎች - BLOCKSIZE ፣ BUFFERCOUNT እና MAXTRANSFERSIZE ተጨማሪ እንደምንነጋገር ተረድተህ ይሆናል። ከMSDN ገለጻቸው እነሆ፡-

አግድ = { áŠ áŒá‹ľ | @ blocksize_ተለዋዋጭ } - በባይት ውስጥ የአካል ማገጃውን መጠን ያሳያል። የሚደገፉት መጠኖች 512፣ 1024፣ 2048፣ 4096፣ 8192፣ 16፣ 384፣ እና 32 bytes (768 KB) ናቸው። ነባሪው ዋጋ 65 ለቴፕ መሳሪያዎች እና 536 ለሌሎች መሳሪያዎች ነው። በተለምዶ ይህ ግቤት አስፈላጊ አይደለም ምክንያቱም የ BACKUP መግለጫ ለመሣሪያው ተገቢውን የማገጃ መጠን ይመርጣል። የማገጃውን መጠን ማቀናበር የራስ-ሰር የማገጃ መጠን ምርጫን በግልፅ ይሽራል።

BUFFERCOUNT = { á‰‹á‰ľ ቆጣሪ | @ buffercount_ተለዋዋጭ } - ለመጠባበቂያ ክዋኔው ጥቅም ላይ የሚውሉትን የ I/O ቋቶች ጠቅላላ ቁጥር ይገልጻል። ማንኛውንም አዎንታዊ የኢንቲጀር ዋጋ መግለጽ ይችላሉ፣ ነገር ግን ብዙ ቁጥር ያላቸው ማቋቋሚያዎች በSqlservr.exe ሂደት ውስጥ ከመጠን በላይ በሆነ ምናባዊ የአድራሻ ቦታ ምክንያት ከማስታወሻ ውጭ የሆነ ስህተት ሊያስከትሉ ይችላሉ።

በጠባቂዎች ጥቅም ላይ የዋለው አጠቃላይ የቦታ መጠን በሚከተለው ቀመር ይወሰናል። BUFFERCOUNT * MAXTRANSFERSIZE.

ማስፋፋት = { áŠ¨áá‰°áŠ› መጠን ማስተላለፍ | @ áŠ¨áá‰°áŠ› ማስተላለፍ_ተለዋዋጭ } በ SQL አገልጋይ እና በመጠባበቂያ ስብስብ ሚዲያ መካከል ለመለዋወጥ ትልቁን የውሂብ ፓኬት መጠን በባይት ይገልጻል። በርካታ 65 ባይት (536 ኪባ) እስከ 64 ባይት (4 ሜባ) ይደገፋሉ።

እምላለሁ - ይህንን ከዚህ በፊት አንብቤዋለሁ ፣ ግን በምርታማነት ላይ ምን ያህል ተጽዕኖ ሊያሳድሩ እንደሚችሉ በጭራሽ አልታየኝም። በተጨማሪም ፣ እንደሚታየው ፣ አንድ ዓይነት “መውጣት” ማድረግ አለብኝ እና አሁን እንኳን በትክክል የሚያደርጉትን በትክክል እንዳልገባኝ አምናለሁ። ስለተደበቀ I/O እና ከሃርድ ድራይቭ ጋር ስለመሥራት የበለጠ ማንበብ ያስፈልገኝ ይሆናል። አንድ ቀን ይህን አደርጋለሁ፣ አሁን ግን እነዚህ እሴቶች ምትኬ በሚወሰድበት ፍጥነት ላይ ተጽዕኖ የሚያሳድርበትን ስክሪፕት ብቻ መፃፍ እችላለሁ።

ወደ 10 ጂቢ የሚጠጋ ትንሽ የውሂብ ጎታ ሠራሁ፣ በኤስኤስዲ ላይ አስቀምጠው፣ እና የመጠባበቂያ ቅጂዎችን በኤችዲዲ ላይ አስቀምጫለሁ።

ውጤቱን ለማከማቸት ጊዜያዊ ጠረጴዛን እፈጥራለሁ (ጊዜያዊ የለኝም, ስለዚህ ውጤቱን በበለጠ ዝርዝር መፈተሽ እችላለሁ, ግን እርስዎ እራስዎ ይወስናሉ):

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. ለአሁን፣ በባክUP DATABASE ውስጥ ስላስቀመጥኳቸው መለኪያዎች ብቻ እነግራችኋለሁ።

ለBLOCKSIZE እኛ “የተዘጋ” የእሴቶች ዝርዝር አለን፣ እና ምትኬን በBLOCKSIZE <4KB አላደረግሁም። የ64KB ብዜት የሆነውን ማንኛውንም ቁጥር ከፍ አድርግ - ከ64KB እስከ 4MB። በስርዓቴ ላይ ያለው ነባሪ 1024 ኪባ ነው፣ 512 - 1024 - 2048 - 4096 ወስጃለሁ።

በBUFFERCOUNT የበለጠ ከባድ ነበር - ማንኛውም አዎንታዊ ቁጥር ሊሆን ይችላል፣ ግን አገናኙ ይላል። በ BACKUP DATABASE ውስጥ እንዴት እንደሚሰላ እና ለምን ትላልቅ እሴቶች አደገኛ እንደሆኑ. እንዲሁም በየትኛው BUFFERCOUNT የመጠባበቂያ ቅጂ እንደተሰራ መረጃን እንዴት ማግኘት እንደሚቻል ይናገራል - ለእኔ 7 ነው. እሱን ለመቀነስ ምንም ፋይዳ አልነበረውም, እና የላይኛው ገደብ በሙከራ ተገኝቷል - በBUFFERCOUNT = 896 እና MAXTRANSFERSIZE = 4194304 መጠባበቂያው ወደቀ ስህተት (ከላይ ባለው አገናኝ ላይ ስለተጻፈው)

Msg 3013፣ ደረጃ 16፣ ግዛት 1፣ መስመር 7 BACKUP DATABASE ባልተለመደ ሁኔታ እያቋረጠ ነው።

Msg 701, ደረጃ 17, ግዛት 123, መስመር 7 ይህንን ጥያቄ ለማስኬድ በሪሶርስ ፑል 'ነባሪ' ውስጥ በቂ የስርዓት ማህደረ ትውስታ የለም.

ለማነፃፀር፣ ምንም አይነት መመዘኛዎችን ሳልገልጽ በመጀመሪያ ምትኬን የማስኬድ ውጤቶችን አሳይሻለሁ፡-

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

ደህና፣ ምትኬ እና ምትኬ፡-

ለዳታቤዝ 'bt'፣ ፋይል 'bt' በፋይል 1070072 ላይ 1 ገፆች ተሰራ።

ለዳታቤዝ 'bt'፣ ፋይል 'bt_log' በፋይል 2 1 ገፆች ተሰራ።

BACKUP DATABASE በተሳካ ሁኔታ 1070074 ገጾችን በ53.171 ሰከንድ (157.227 ሜባ/ሰከንድ) ሰርቷል።

ስክሪፕቱ ራሱ፣ መለኪያዎችን በመሞከር፣ በሁለት ሰዓታት ውስጥ ሰርቷል፣ ሁሉም ልኬቶች ገብተዋል። ጉግል የተመን ሉህ. እና ከሦስቱ ምርጥ የአፈፃፀም ጊዜያት ጋር የውጤቶች ምርጫ እዚህ አለ (ጥሩ ግራፍ ለመስራት ሞከርኩ ፣ ግን በጽሁፉ ውስጥ ከጠረጴዛ ጋር ማድረግ አለብኝ ፣ እና በአስተያየቶች ውስጥ @ ድብልቅ ታክሏል በጣም አሪፍ ግራፊክስ).

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 አገልጋይ: በስቴሮይድ ላይ ምትኬ

ትኩረት, በጣም ጠቃሚ ማስታወሻ ከ @ ድብልቅ ከ አስተያየት:

በእነዚህ የእሴቶች ክልል ውስጥ ባሉ መለኪያዎች እና የመጠባበቂያ ፍጥነት መካከል ያለው ግንኙነት በዘፈቀደ ነው ፣ ምንም ንድፍ የለም ብለን በእርግጠኝነት መናገር እንችላለን። ነገር ግን ከተገነቡት መለኪያዎች ርቆ መሄድ በውጤቱ ላይ ጥሩ ተጽእኖ እንደነበረው ግልጽ ነው

እነዚያ። መደበኛውን የባክአፕ መለኪያዎችን በማስተዳደር ብቻ በመጠባበቂያ የማስወገጃ ጊዜ 2 እጥፍ ትርፍ ነበር፡ 26 ሰከንድ፣ መጀመሪያ ላይ ከ 53 ጋር። ያ መጥፎ አይደለም አይደል? ነገር ግን በተሃድሶው ምን እንደሚሆን ማየት አለብን. ለማገገም አሁን 4 ጊዜ ቢወስድስ?

በመጀመሪያ፣ በነባሪ ቅንጅቶች ምትኬን ወደነበረበት ለመመለስ ምን ያህል ጊዜ እንደሚወስድ እንለካ።

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

ደህና, እርስዎ እራስዎ ታውቃላችሁ, መንገዶቹ እንዳሉ, መተካት አይተካም, ማገገም ማገገም አይደለም. እና እንደዚህ አደርጋለሁ፡-

ለዳታቤዝ 'bt'፣ ፋይል 'bt' በፋይል 1070072 ላይ 1 ገፆች ተሰራ።

ለዳታቤዝ 'bt'፣ ፋይል 'bt_log' በፋይል 2 1 ገፆች ተሰራ።

ዳታባሴን ወደነበረበት መመለስ በተሳካ ሁኔታ 1070074 ገጾችን በ40.752 ሴኮንድ (205.141 ሜባ/ሰከንድ) ሰርቷል።

አሁን በተቀየሩ BLOCKSIZE፣ BUFFERCOUNT እና MAXTRANSFERSIZE የተወሰዱ መጠባበቂያዎችን ወደነበሩበት ለመመለስ እሞክራለሁ።

BLOCKSIZE = 16384, BUFFERCOUNT = 224, MAXTRANSFERSIZE = 4194304

ዳታባሴን ወደነበረበት መመለስ በተሳካ ሁኔታ 1070074 ገጾችን በ32.283 ሴኮንድ (258.958 ሜባ/ሰከንድ) ሰርቷል።

BLOCKSIZE = 4096, BUFFERCOUNT = 448, MAXTRANSFERSIZE = 4194304

ዳታባሴን ወደነበረበት መመለስ በተሳካ ሁኔታ 1070074 ገጾችን በ32.682 ሴኮንድ (255.796 ሜባ/ሰከንድ) ሰርቷል።

BLOCKSIZE = 16384, BUFFERCOUNT = 448, MAXTRANSFERSIZE = 2097152

ዳታባሴን ወደነበረበት መመለስ በተሳካ ሁኔታ 1070074 ገጾችን በ32.091 ሴኮንድ (260.507 ሜባ/ሰከንድ) ሰርቷል።

BLOCKSIZE = 4096, BUFFERCOUNT = 56, MAXTRANSFERSIZE = 4194304

ዳታባሴን ወደነበረበት መመለስ በተሳካ ሁኔታ 1070074 ገጾችን በ32.401 ሴኮንድ (258.015 ሜባ/ሰከንድ) ሰርቷል።

የDATABASE መልሶ ማግኛ መግለጫ በማገገሚያ ጊዜ አይለወጥም ፣ እነዚህ መለኪያዎች በእሱ ውስጥ አልተገለጹም ፣ SQL አገልጋይ ራሱ ከመጠባበቂያው ይወስናል። እና በማገገም እንኳን ትርፍ ሊኖር እንደሚችል ግልፅ ነው - ወደ 20% በፍጥነት (እውነቱን ለመናገር, ለማገገም ብዙ ጊዜ አላጠፋሁም, በበርካታ "ፈጣን" መጠባበቂያዎች ውስጥ ሮጥኩ እና ምንም መበላሸት አለመኖሩን አረጋግጣለሁ.).

እንደዚያ ከሆነ፣ እነዚህ ለሁሉም ሰው ተስማሚ የሆኑ አንዳንድ መለኪያዎች እንዳልሆኑ ላስረዳ። በመሞከር ለራስዎ ጥሩውን መለኪያዎች ብቻ ማግኘት ይችላሉ. እነዚህን ውጤቶች አግኝቻለሁ, የተለያዩ ያገኛሉ. ነገር ግን ምትኬዎችዎን "ማስተካከል" እንደሚችሉ እና በተጨባጭ በፍጥነት መፍጠር እና ማሰማራት እንደሚችሉ ይመለከታሉ።

እንዲሁም ሰነዶቹን ሙሉ በሙሉ እንዲያነቡ አጥብቄ እመክራለሁ።

ስለ መጠባበቂያዎች መጻፍ ስለጀመርኩ ወዲያውኑ ስለ አንድ ተጨማሪ "ማመቻቸት" መጻፍ እፈልጋለሁ, ይህም ከ "ማስተካከል" መለኪያዎች የበለጠ የተለመደ ነው (እኔ እስከገባኝ ድረስ, ቢያንስ በአንዳንድ የመጠባበቂያ መገልገያዎች ጥቅም ላይ ይውላል, ምናልባትም ከመለኪያዎች ጋር አብሮ ሊሆን ይችላል). ቀደም ሲል የተገለፀው) ነገር ግን በሀበሬ ላይም እስካሁን አልተገለጸም።

በሰነዱ ውስጥ ሁለተኛውን መስመር ከተመለከትን ፣ በ BACKUP DATABASE ፣ እዚያ እናያለን-

TO <backup_device> [ ,...n ]

ብዙ የመጠባበቂያ_መሳሪያዎችን ከገለጹ ምን የሚሆን ይመስልዎታል? አገባቡ ይፈቅዳል። እና በጣም አስደሳች ነገር ይከሰታል - መጠባበቂያው በቀላሉ በበርካታ መሳሪያዎች ላይ "ይሰራጫል". እነዚያ። እያንዳንዱ "መሳሪያ" በተናጥል የማይጠቅም ይሆናል, አንድ ይጠፋል, ሙሉውን ምትኬ ያጣ ይሆናል. ነገር ግን እንዲህ ዓይነቱ ማጉደል የመጠባበቂያ ፍጥነት ላይ ምን ተጽዕኖ ይኖረዋል?

በተመሳሳዩ አቃፊ ውስጥ ጎን ለጎን በተቀመጡ ሁለት “መሳሪያዎች” ላይ ምትኬ ለመስራት እንሞክር።

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

የዓለም አባቶች፣ ለምንድነው ይህ የሚደረገው?

ለዳታቤዝ 'bt'፣ ፋይል 'bt' በፋይል 1070072 ላይ 1 ገፆች ተሰራ።

ለዳታቤዝ 'bt'፣ ፋይል 'bt' 2 ገፆች ተሰርተዋልበፋይል 1 ላይ log'.

BACKUP DATABASE በተሳካ ሁኔታ 1070074 ገጾችን በ40.092 ሰከንድ (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.234 ሰከንድ (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;

ዳታባሴን ወደነበረበት መመለስ በተሳካ ሁኔታ 1070074 ገጾችን በ38.027 ሴኮንድ (219.842 ሜባ/ሰከንድ) ሰርቷል።

ትንሽ ፈጣን ፣ ግን የሆነ ቦታ ቅርብ ፣ ጉልህ አይደለም። በአጠቃላይ, መጠባበቂያው በፍጥነት ይወገዳል እና በተመሳሳይ መንገድ ይመለሳል - ስኬት? እንደ እኔ, በጣም ስኬታማ ነው. ይህ አስፈላጊ ነው, ስለዚህ እደግመዋለሁ - እርስዎ ከሆኑ ከእነዚህ ፋይሎች ውስጥ ቢያንስ አንዱን ከጠፋብዎት, ሙሉውን ምትኬ ያጣሉ.

በ Trace Flags 3213 እና 3605 በመጠቀም የሚታየውን የመጠባበቂያ መረጃ በምዝግብ ማስታወሻው ውስጥ ከተመለከቱ፣ ወደ ብዙ መሳሪያዎች በምትኬ ሲቀመጥ ቢያንስ የBUFFERCOUNT ቁጥር ይጨምራል። ምናልባት፣ ለBUFFERCOUNT፣ BLOCKSIZE፣ MAXTRANSFERSIZE ተጨማሪ ምርጥ መለኪያዎችን ለመምረጥ መሞከር ትችላለህ፣ ነገር ግን ወዲያውኑ አልተሳካልኝም፣ እና እንደዚህ አይነት ሙከራ እንደገና ለመስራት በጣም ሰነፍ ነበርኩ፣ ግን ለተለያዩ የፋይሎች ብዛት። እና ስለ ጎማዎቹ አሳፋሪ ነው። እንደዚህ አይነት ሙከራዎችን በቤት ውስጥ ማደራጀት ከፈለጉ, ስክሪፕቱን እንደገና ማዘጋጀት አስቸጋሪ አይደለም.

በመጨረሻም ስለ ዋጋ እንነጋገር። የመጠባበቂያ ቅጂው ከተጠቃሚዎች ስራ ጋር በትይዩ ከተወገደ, ለመፈተሽ በጣም ሀላፊነት ያለው አቀራረብ መውሰድ ያስፈልግዎታል, ምክንያቱም መጠባበቂያው በፍጥነት ከተወገደ, ዲስኮች የበለጠ ይጣላሉ, በማቀነባበሪያው ላይ ያለው ጭነት ይጨምራል (አሁንም መጭመቅ አለብዎት). በራሪው ላይ), እና በዚህ መሠረት የስርዓቱ አጠቃላይ ምላሽ ይቀንሳል.

መቀለድ ብቻ ነው፣ ግን ምንም አይነት መገለጦችን እንዳላደረግኩ በሚገባ ተረድቻለሁ። ከዚህ በላይ የተጻፈው የመጠባበቂያ ቅጂዎችን ለመውሰድ በጣም ጥሩውን መለኪያዎች እንዴት መምረጥ እንደሚችሉ ማሳያ ነው።

የምታደርጉት ነገር ሁሉ የሚደረገው በራስህ አደጋ እና ስጋት መሆኑን አስታውስ። ምትኬዎችዎን ይፈትሹ እና ስለ DBCC CHECKDB አይርሱ።

ምንጭ: hab.com

አስተያየት ያክሉ