Symptomen
Neem als voorbeeld het volgende scenario:
- U hebt een tabel met gegroepeerde columnstore-indexen en de tabel heeft veel kolommen (in honderden).
- De gegevens (gegevenstype) van deze kolommen bestaan uit gegevens die in hoge mate kunnen worden samengeperst, zoals varchar.
- Voer een SELECT-instructie uit voor deze tabel om een grote subset of alle kolommen uit deze tabel te selecteren.
- Uw select-instructie heeft een WHERE-component die de uitvoer ervan beperkt tot een paar rijen (de query is zeer selectief).
In dit scenario kunnen een of meer van de volgende symptomen optreden:
- Door de gelijktijdige werkbelasting (andere query's die tegelijkertijd op de server worden uitgevoerd als deze query) kunnen de prestaties afnemen en de doorvoer verloren gaan.
- Mogelijk zie je af en toe hoog CPU-gebruik.
- Als u een query uitvoert op sys.dm_os_ring_buffers en vermeldingen van het type SchedulerMonitor bekijkt, vindt u onregelmatige 'niet-renderende planner'-berichten die zijn geregistreerd tijdens de uitvoering van deze query.
- Mogelijk ontvangt u een niet-renderende plannerfout in het foutenlogboek en wordt er mogelijk een symptoomgeheugendumpbestand gegenereerd.
Oplossing
Het probleem werd voor het eerst opgelost in de volgende cumulatieve update van SQL Server:
Aanbeveling: Installeer de meest recente cumulatieve update voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. We raden u aan de meest recente cumulatieve updates voor SQL Server te downloaden en te installeren:
Meer informatie
Details herstellenDe werknemers die de kolomsegmenten verwerken (decomprimeren en scannen op kwalificerende rijen) die worden gebruikt om CPU-gebruik over te dragen aan andere werknemers/gelijktijdige query-uitvoeringen uit te voeren wanneer een bepaald drempelaantal rijen werd uitgevoerd. Toen de WHERE-component zeer selectief was om weinig rijen te produceren, verwerkten de arbeiders die deze query verwerken ongecomprimeerde en een groot aantal segmenten (omdat zeer weinig rijen in aanmerking komen) voordat ze de CPU op een coöperatieve manier opgaven zodat andere werknemers hun werklast konden verwerken. Dit leidde tot onregelmatig CPU-gebruik en degradatie van de doorvoer bij gelijktijdige werkbelasting. De oplossing optimaliseert en verbetert het algoritme voor CPU-deling voor dergelijke columnstore-query's.
Meer informatie
Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.