Lezen in het Engels

Delen via


Prestatievermindering bij het upgraden van databasecompatibiliteitsniveau van 120 naar 130

Dit artikel helpt u bij het oplossen van het probleem dat optreedt wanneer u het compatibiliteitsniveau van de database bijwerken van 120 naar 130.

Oorspronkelijke productversie: SQL Server 2016, SQL Server 2017 op Windows (alle edities)
Oorspronkelijk KB-nummer: 3212023

Samenvatting

Bekijk het volgende scenario:

  • U voert een ruimtelijke query uit met behulp van een filter met een functie, zoals STIntersects in SQL Server 2016 of in SQL Server 2017 in Windows.
  • Het compatibiliteitsniveau van de database is 120.
  • De query maakt gebruik van een parallel uitvoeringsplan.
  • U werkt het compatibiliteitsniveau van de database bij naar 130 en het uitvoeringsplan is gewijzigd van parallel naar serieel.

In dit scenario ondervindt u prestatievermindering als de query een grote resultatenset retourneert.

Oplossing

Probeer een van de volgende methoden om dit probleem op te lossen:

  • Stel het compatibiliteitsniveau van uw database terug naar 120. Wanneer u dit doet, kunt u niet profiteren van een deel van de functionaliteit die beschikbaar is in SQL Server 2016 of in SQL Server 2017 in Windows onder databasecompatibiliteitsniveau 130. U kunt echter nog steeds veel verbeteringen realiseren die niet zijn gebonden aan het compatibiliteitsniveau van de database, bijvoorbeeld een algehele prestatieverbetering van querybewerkingen met ruimtelijke gegevenstypen.

    Zie ALTER DATABASE -compatibiliteitsniveau (Transact-SQL) voor een lijst met verbeteringen in SQL Server 2016 waarvoor databasecompatibiliteitsniveau 130 is vereist.

  • Dwing het plan af dat wordt gegenereerd met databasecompatibiliteitsniveau 120 als het betere prestaties biedt. U kunt dit plan afdwingen tijdens uitvoering met databasecompatibiliteitsniveau 130 met behulp van de USE PLAN queryhint. Zie Hints (Transact-SQL) - Query voor meer informatie over het gebruik van hints.

    U kunt ook Query Store gebruiken om specifieke plankeuzen te identificeren en op te lossen. Zie Query Store-gebruiksscenario's voor meer informatie over het gebruik van Query Store voor dit doel.

Meer informatie

Compatibiliteitsniveaus van SQL Server-databases 120 en 130 gebruiken verschillende benaderingen om de kardinaliteit van predicaten te schatten, waarbij een scalaire door de gebruiker gedefinieerde functie of een bepaalde T-SQL-functie (zoals STIntersects) wordt vergeleken met een constante.

Hoewel het kostenmodel dat wordt gebruikt door databasecompatibiliteitsniveau 130 prestatieverbeteringen genereert voor veel workloads in vergelijking met niveau 120, kunnen sommige query's (afhankelijk van de gebruikte gegevens en functies) de prestaties van queryplannen daadwerkelijk afnemen op niveau 130.

Van toepassing op

  • SQL Server 2017 op Windows (alle edities)
  • SQL Server 2016 Service Pack 1
  • SQL Server 2016 Developer
  • SQL Server 2016 Enterprise
  • SQL Server 2016 Express
  • SQL Server 2016 Standard
  • SQL Server 2016 Web