KB3191487 – Parannettu SQL Server vakautta ja samanaikaista kyselyjen suorittamista joissakin sarakesäilön kyselyissä SQL Server 2014:ssä ja 2016:ssa.

Käytetään kohteeseen
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 Standard - duplicate (do not use)

Ongelman ilmenemistapa

Mieti seuraavaa tilannetta:

  • Taulukossa on yhdistelmäsarakesäilön indeksejä, ja taulukossa on paljon sarakkeita (satoja).
  • Näiden sarakkeiden tiedot (tietotyypit) ovat helposti pakattavaa tietoa, kuten varchar.
  • Suorita SELECT-lause tässä taulukossa suuren osajoukon tai kaikkien sarakkeiden valitsemiseksi tästä taulukosta.
  • SELECT-lauseessa on WHERE-lause, joka rajoittaa sen tulostuksen vain muutamaan riviin (kysely on erittäin valikoiva).

Tässä skenaariossa saatat kohdata jonkin seuraavista oireista tai kaikki ne:

  • Samanaikaisen kuormituksen (muut kyselyt, jotka suoritetaan palvelimessa samaan aikaan tämän kyselyn kanssa) suorituskyky voi heikentyä ja siirtonopeus saattaa heikentyä.
  • Suorittimen käyttö voi olla ajoittain suurta.
  • Jos teet kyselyn sys.dm_os_ring_buffers ja tarkastelet SchedulerMonitor-tyypin tapahtumia, kyselyn suorituksen aikana kirjataan ajoittaisia "ei-periksiantavia ajoitussanomia".
  • Virhelokiin saattaa tulla näkyviin ei-tuottava ajoitusvirhe ja oiremuistivedostiedosto saatetaan luoda.

        
      

Ratkaisu

Ongelma korjattiin ensimmäisen kerran seuraavassa SQL Server kumulatiivisessa päivityksessä:

Suositus: Asenna uusin kumulatiivinen päivitys SQL Server:lle

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Suosittelemme, että lataat ja asennat uusimmat kumulatiiviset päivitykset SQL Server:lle:

      

Lisätietoja

KorjaustiedotTyöntekijät, jotka käsittelevät sarakesegmenttejä (purkavat ne ja tarkistavat ne tarkastettujen rivien varalta), käyttävät aiemmin suoritinkäytön "luovuttamiseen" muille työntekijöille tai samanaikaisille kyselyjen suorittamisille, kun tietty kynnysarvo rivejä suoritettiin. Kun WHERE-lause oli erittäin valikoiva tuottamaan vain muutamia rivejä, kyselyä käsittelevät työntekijät käsittelivät pakkaamattomia ja suuria määriä segmenttejä (koska ne täyttävät vaatimukset), ennen kuin he luopuivat suorittimesta yhteistyössä, jotta muut työntekijät voivat käsitellä työkuormiaan. Tämä johti epäsäännölliseen suoritinkäyttöön ja samanaikaisen kuormituksen suorituskykymäärän heikkenemiseen. Korjaus optimoi ja parantaa suorittimen jakamisalgoritmia tällaisissa sarakemyymälän kyselyissä.

Viitteet

Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.