KB2634571 – DBCC CHECKDB komandos patobulinimai gali lemti greitesnį veikimą, kai naudojate parinktį PHYSICAL_ONLY

Taikoma
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 3 SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 Service Pack 2 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Express SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core

"„Microsoft“" platina "„Microsoft“ „SQL Server“ 2008 R2", "„SQL Server“ R2 SP1" ir "„SQL Server“ 2008" pataisas kaip vieną atsisiunčiamą failą. Kadangi pataisos yra kaupiamosios, kiekviename naujame leidime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį "„SQL Server“ R2", "„SQL Server“ 2008 R2 SP1" ir "„SQL Server“ 2008" pataisų leidimą.

Įžanga

DBCC CHECKDB komanda subalansuoja našumo ir išteklių poreikį. Todėl pagal numatytuosius nustatymus komanda DBCC CHECKDB gali nemaksimizuoti išteklių naudojimo, kai vykdomos duomenų bazės nuoseklumo patikros.

Pvz., vykdant duomenų bazės nuoseklumo patikras, komanda DBCC CHECKDB gali nemaksimizuoti disko įvesties/išvesties naudojimo.

Sprendimas

Kaupiamojo naujinimo informacija

„SQL Server“ 2008 Service Pack 2

Šios problemos pataisa pirmą kartą buvo išleista 9 kaupiamajame naujinime, skirtame "„SQL Server“ 2008" 2 pakeitimų paketui. Jei norite gauti daugiau informacijos apie šį kaupiamųjų naujinimų paketą, spustelėkite toliau nurodytą straipsnio numerį ir peržiūrėkite "Microsoft" žinių bazės straipsnį:

2673382 9 kaupiamasis naujinimo paketas, skirtas "„SQL Server“ 2008" 2 pakeitimų paketui

                 Atkreipkite dėmesį Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje naujoje pataisoje yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį "„SQL Server“ 2008" pataisų leidimą. Rekomenduojame taikyti naujausią pataisos leidimą, kuriame yra ši karštoji pataisa. Daugiau informacijos rasite šiame "Microsoft‟ žinių bazės straipsnyje:

2402659 2008 „SQL Server“ komponavimo versijos, išleistos išleidus 2008 „SQL Server“ 2 pakeitimų paketą

"Microsoft „SQL Server“ 2008" karštosios pataisos yra sukurtos konkretiems "„SQL Server“" pakeitimų paketams. Turite taikyti "„SQL Server“ 2008 Service Pack 2" karštąją pataisą "„SQL Server“ 2008" 2 pakeitimų paketo diegimui. Pagal numatytuosius nustatymus visos karštosios pataisos, esančios "„SQL Server“" pakeitimų pakete, yra įtrauktos į kitą "„SQL Server“" pakeitimų paketą.

„SQL Server“ 2008 Service Pack 3

Šios problemos pataisa pirmą kartą buvo išleista 4 kaupiamajame naujinime, skirtame „SQL Server“ 2008 3 pakeitimų paketui. Daugiau informacijos apie šį kaupiamųjų naujinimų paketą rasite šiame "Microsoft‟ žinių bazės straipsnyje:

2673383 4 kaupiamasis naujinimo paketas, skirtas "„SQL Server“ 2008" 3 pakeitimų paketui

                 Atkreipkite dėmesį Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje naujoje pataisoje yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį "„SQL Server“ 2008" pataisų leidimą. "„Microsoft“" rekomenduoja taikyti naujausią pataisos leidimą, kuriame yra ši karštoji pataisa. Daugiau informacijos rasite šiame "Microsoft‟ žinių bazės straipsnyje:

2629969 „SQL Server“ 2008" komponavimo versijos, išleistos išleidus 2008 m. 3 pakeitimų paketą „SQL Server“

"Microsoft „SQL Server“ 2008" karštosios pataisos yra sukurtos konkretiems "„SQL Server“" pakeitimų paketams. Turite taikyti "„SQL Server“ 2008 Service Pack 3" karštąją pataisą "„SQL Server“ 2008 Service Pack 3" diegimui. Pagal numatytuosius nustatymus visos karštosios pataisos, esančios "„SQL Server“" pakeitimų pakete, yra įtrauktos į kitą "„SQL Server“" pakeitimų paketą.

11 kaupiamasis naujinimų paketas, skirtas „SQL Server“ R2

Šios problemos pataisa pirmą kartą buvo išleista 11 kaupiamajame naujinime. Daugiau informacijos apie tai, kaip gauti šį "„SQL Server“ R2" kaupiamųjų naujinimų paketą, ieškokite šiame "Microsoft" žinių bazės straipsnyje:

2633145 11 kaupiamasis naujinimo paketas, skirtas "„SQL Server“ 2008 R2"

                 Atkreipkite dėmesį Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje naujoje pataisoje yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį "„SQL Server“ R2" pataisų leidimą. Rekomenduojame taikyti naujausią pataisos leidimą, kuriame yra ši karštoji pataisa. Daugiau informacijos rasite šiame "Microsoft‟ žinių bazės straipsnyje:

981356 „SQL Server“ 2008 R2 komponavimo versijos, išleistos po 2008 R2 „SQL Server“ išleidimo

4 kaupiamasis naujinimų paketas, skirtas „SQL Server“ 2008 R2 SP1

Šios problemos pataisa pirmą kartą buvo išleista 4 kaupiamajame naujinime. Daugiau informacijos apie tai, kaip gauti šį kaupiamųjų naujinimų paketą, skirtą "„SQL Server“ R2 SP1", ieškokite šiame "Microsoft" žinių bazės straipsnyje:

2633146 4 kaupiamasis naujinimo paketas, skirtas "„SQL Server“ 2008 R2" SP1

                 Atkreipkite dėmesį Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje naujoje pataisoje yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį "„SQL Server“ R2 SP1" pataisų leidimą. Rekomenduojame taikyti naujausią pataisos leidimą, kuriame yra ši karštoji pataisa. Daugiau informacijos rasite šiame "Microsoft‟ žinių bazės straipsnyje:

2567616 „SQL Server“ 2008 R2 komponavimo versijos, išleistos po 2008 „SQL Server“ R2 SP1 išleidimo

„SQL Server 2012“

"„SQL Server“ 2012" yra šių pataisų kodo pakeitimai. Toliau aprašytos sekimo vėliavėlės 2562 ir 2549 taip pat taikomos "„SQL Server“ 2012". Tačiau norint sumažinti DBCC_MULTIOBJECT_SCANNER skląsčio ginčus, 2012 m. „SQL Server“ nereikia pėdsakų vėliavėlės 2562. Šie pakeitimai pagal numatytuosius nustatymus buvo įtraukti į „SQL Server“ 2012.

Daugiau informacijos

Šiame kaupiamajame naujinime pateikiamos dvi sekimo vėliavėlės, skirtos geriau padidinti disko įvesties/išvesties išteklių naudojimą, kai vartotojas vykdo DBCC CHECKDB komandą. Nors šie patobulinimai skirti tik PHYSICAL_ONLY parinkčiai, jie taip pat gali pagerinti bendrą DBCC CHECKDB komandų, kurios nenaudoja parinkties PHYSICAL_ONLY , našumą.

Sekimo vėliava 2562

Šioje sekimo vėliavėlėje yra šie pakeitimai:

  • Vykdykite komandą DBCC CHECKDB vienu "paketu", nepaisydami duomenų bazėje esančių indeksų skaičiaus. Pagal numatytuosius nustatymus DBCC CHECKDB komanda bando minimizuoti tempdb išteklius ribodama indeksų arba "faktų" skaičių, kuriuos generuoja naudodama "paketų" koncepciją. Ši sekimo vėliavėlė verčia visą apdorojimą perkelti į vieną paketą.
  • Patobulinkite vidinį apdorojimą, kad būtų galima nustatyti, kuriuos puslapius skaityti iš duomenų bazės. Tai sumažina DBCC_MULTIOBJECT_SCANNER skląsčio ginčą.

Vienas iš šios sekimo vėliavėlės naudojimo padarinių yra tai, kad vietos poreikis tempdb gali padidėti. "Tempdb " gali išaugti iki 5 procentų arba daugiau vartotojų duomenų bazės, kurią apdoroja DBCC CHECKDB komanda. Todėl rekomenduojame iš anksto nustatyti tempdb bent 5 procentus duomenų bazės dydžio, kai naudojate šią sekimo vėliavėlę, kad išvengtumėte automatinio didėjimo, kuris gali sulėtinti DBCC CHECKDB komandos veikimą.

Atkreipkite dėmesį Sekimo vėliavėlė 2562 yra seanso lygio sekimo žymė. Galite įjungti seanso lygiu.

Sekimo vėliava 2549

Komanda DBCC CHECKDB sukuria vidinį kiekvieno unikalaus disko visų duomenų bazės failų puslapių sąrašą. Ši logika nustato unikalius diskus pagal kiekvieno failo fizinio vardo disko raidę. Jei pamatiniai diskai iš tikrųjų yra unikalūs, kai disko raidės, ar ne, DBCC CHECKDB komanda juos traktuotų kaip vieną diską. Įgalinus šią sekimo vėliavėlę, laikoma, kad kiekvienas duomenų bazės failas yra unikaliame diske. Nenaudokite šios sekimo žymės, nebent žinote, kad kiekvienas failas yra pagrįstas unikaliu fiziniu disku.

Atkreipkite dėmesį Trace flag 2549 yra visuotinė sekimo žymė. Norėdami jį įjungti, turite jį naudoti kaip paleisties parametrą arba naudoti DBCC TRACEON (2549,-1).

Nors šios sekimo vėliavėlės pagerina DBCC CHECKDB komandų, skirtų DBCC CHECKDB parinkties naudojimui, našumą, kai kurie vartotojai gali nepastebėti jokio efektyvumo pagerėjimo. Nors šios sekimo vėliavėlės pagerina disko įvesties/išvesties išteklių naudojimą, pagrindinis disko išteklių našumas gali riboti bendrą DBCC CHECKDB komandos našumą.

Atkreipkite dėmesį į šiuos apribojimus:

  • Veikimo patobulinimai nėra skirti efektyvumui pagerinti, kai naudojate taisymo parinktį.
    Pavyzdžiui, efektyvumo patobulinimai nėra skirti našumui pagerinti, kai naudojate parinktį REPAIR_ALLOW_DATA_LOSS .
  • Patobulinimai neturi įtakos DBCC CHECKALLOC komandai.
  • Patobulinimai gali pagerinti DBCC CHECKTABLE komandos veikimą indeksuose su daug puslapių. Tačiau patobulinimais nesiekiama pagerinti DBCC CHECKTABLE komandos veikimo.

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.