KB3107397 – patobulinta užklausų vykdymo planų, kuriuose yra likutinių taisyklių pateikimo "pushdown", diagnostika „SQL Server“

Taikoma
SQL Server 2012 Enterprise SQL Server 2012 Web SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - 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)

Požymiai

Kai kurie užklausų vykdymo planai "Microsoft „SQL Server“" apima filtro vertinimo modelį lentelės viršuje arba rodyklės nuskaitymo / diapazono operaciją. Kai kurios filtro taisyklės sąlygos dalys gali atitikti rodyklės raktą, todėl gali būti naudojamos rodyklės paieškos arba diapazono nuskaitymui vykdyti. Likusios predikato dalys yra žinomos kaip "liekamosios" ir turi būti įvertintos kiekvienos eilutės išvesties nuskaitymo arba diapazono operacija. Tai atitiktų filtro operatorių. Tačiau, norėdamas pagerinti našumą, „SQL Server“ gali nustumti tokį filtrą į patį lentelės prieigos operatorių.

Nors šis metodas pagerina bendrą našumą, esant tam tikroms sąlygoms (pvz., tuo atveju, kai pateikiamas netikslus kardinalumo įvertinimas, susijęs su parametrų jautrumu), žemiau esantis nuskaitymo filtras gali apdoroti didesnį eilučių skaičių nei tikėtasi. Šis faktas gali būti paslėptas užklausų veikimo trikčių šalinimo metu, kai naudojate faktinį vykdymo planą, nes faktinis grąžintų eilučių skaičius atitiks eilučių skaičių pritaikius liekamąją taisyklės sąlygą, o ne faktinį eilučių, nuskaitytų iš lentelės ar indekso, skaičių.

Sprendimas

Siekiant pagerinti scenarijaus, aprašyto skyriuje Simptomai, diagnostiką, "„SQL Server“ 2012 Service Pack 3" (SP3) ir "„SQL Server“ 2014 SP2" pristato naują showplan XML atributą "Actual Rows Read". Šis atributas pateikia informaciją apie tai, kiek eilučių operatorius perskaitė prieš taikydamas liekamąją taisyklės sąlygą.

Ši funkcija pirmą kartą buvo pristatyta šiuose "„SQL Server“" pakeitimų paketuose. 

Daugiau informacijos apie "„SQL Server“ 2012" 3 pakeitimų paketą (SP3) rasite "„SQL Server“ 2012" 3 pakeitimų paketo ištaisytas klaidas.

2 pakeitimų paketas, skirtas „SQL Server“ „SQL Server“ 2014
        
         „SQL Server“ 2016 1 pakeitimų paketas (SP1) 

Apie "„SQL Server“" pakeitimų paketus

Pakeitimų paketai yra kaupiamieji. Kiekviename naujame pakeitimų pakete yra visos ankstesniuose pakeitimų paketuose esančios pataisos ir visos naujos pataisos. Rekomenduojame taikyti naujausią pakeitimų paketą ir naujausią to pakeitimų paketo kaupiamąjį naujinimą. Prieš įdiegiant naujausią pakeitimų paketą nereikia įdiegti ankstesnio pakeitimų paketo. Norėdami rasti daugiau informacijos apie naujausią pakeitimų paketą ir naujausią kaupiamąjį naujinimą, naudokite šio straipsnio 1 lentelę.

Kaip nustatyti "„SQL Server“" ir jo komponentų versiją, leidimą ir atnaujinimo lygį