Serverconfiguratie: drempelwaarde voor cursor

Van toepassing op:SQL Server

In dit artikel wordt beschreven hoe u de optie voor serverconfiguratie cursor threshold in SQL Server configureert met behulp van SQL Server Management Studio of Transact-SQL. Met de cursor threshold optie geeft u het aantal rijen op in de cursorset waarmee cursortoetsen asynchroon worden gegenereerd. Wanneer cursors een sleutelset genereren voor een resultatenset, maakt de queryoptimalisatie een schatting van het aantal rijen dat wordt geretourneerd voor die resultatenset. Als de queryoptimizer schat dat het aantal geretourneerde rijen groter is dan deze drempel, wordt de cursor asynchroon gegenereerd, zodat de gebruiker rijen uit de cursor kan ophalen terwijl de cursor verder wordt gevuld. Anders wordt de cursor synchroon gegenereerd en wacht de query totdat alle rijen worden geretourneerd.

Beperkingen

SQL Server biedt geen ondersteuning voor het asynchroon genereren van sleutelsetgestuurde of statische Transact-SQL cursors. Transact-SQL-cursorbewerkingen, zoals OPEN of FETCH, worden in batches verwerkt, dus is asynchrone generatie van Transact-SQL-cursors niet nodig. SQL Server blijft asynchrone sleutelsetgestuurde of statische API-servercursors ondersteunen wanneer lage latentie OPEN van belang is, vanwege de heen-en-weergangen tussen client en server voor elke cursorbewerking.

De nauwkeurigheid van de queryoptimalisatie om een schatting te bepalen voor het aantal rijen in een sleutelset, is afhankelijk van de valuta van de statistieken voor elk van de tabellen in de cursor.

Aanbevelingen

Deze optie is een geavanceerde optie en moet alleen worden gewijzigd door een ervaren databaseprofessional.

Als u cursor threshold instelt op -1, worden alle sleutelverzamelingen synchroon gegenereerd, wat kleine cursorverzamelingen ten goede komt. Als u deze optie instelt cursor threshold0, worden alle cursorsleutelsets asynchroon gegenereerd. Bij andere waarden vergelijkt de queryoptimizer het aantal verwachte rijen in de cursorset en bouwt deze de keyset asynchroon op als dit aantal hoger is dan het aantal dat in cursor threshold is ingesteld. Stel niet cursor threshold te laag in, omdat kleine resultatensets beter synchroon worden gebouwd.

Permissions

Uitvoermachtigingen voor sp_configure zonder parameters of met alleen de eerste parameter worden standaard aan alle gebruikers verleend. Om sp_configure met beide parameters uit te voeren om een configuratieoptie te wijzigen of om de instructie RECONFIGURE uit te voeren, moet een gebruiker beschikken over de machtiging ALTER SETTINGS op serverniveau. De ALTER SETTINGS machtiging wordt impliciet bewaard door de vaste serverfuncties sysadmin en serveradmin .

SQL Server Management Studio gebruiken

  1. Klik in Objectverkenner met de rechtermuisknop op een server en selecteer Eigenschappen.

  2. Selecteer het geavanceerde knooppunt.

  3. Wijzig onder Diversen de cursor threshold optie in de gewenste waarde.

Gebruik Transact-SQL

  1. Maak verbinding met de database-engine.

  2. Selecteer Nieuwe query in de standaardbalk.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. In dit voorbeeld wordt getoond hoe u sp_configure gebruikt om de optie cursor threshold in te stellen op 0, zodat cursor-keysets asynchroon worden gegenereerd.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'cursor threshold', 0;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Zie Server-configuratieoptiesvoor meer informatie.

Opvolgen: Nadat u de optie voor de cursordrempel hebt geconfigureerd

De instelling wordt onmiddellijk van kracht zonder de server opnieuw op te starten.