Dela via


Serverkonfiguration: kostnadströskel för parallellitet

gäller för:SQL ServerAzure SQL Managed Instance

Den här artikeln beskriver hur du konfigurerar serverkonfigurationsalternativet cost threshold for parallelism i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.

Om kostnadströskel för parallellitet

Alternativet cost threshold for parallelism anger det tröskelvärde där SQL Server tar hänsyn till parallella planer på datorer med mer än en logisk processor. Alternativet cost threshold for parallelism kan anges till valfritt värde från 0 till 32 767.

Kostnaden är summan av uppskattade operatorkostnader i en frågeplan (till exempel CPU och I/O). Det är ett relativt mått som endast används för planval. den mäter inte faktisk körning.

Vissa Transact-SQL komponenter kan hämma en parallell plan. Till exempel icke-linjära skalära användardefinierade funktioner (UDF), ändringar av tabellvariabler och vissa systemanrop. SQL Server utvärderar endast parallella alternativ när den bästa serieplanens uppskattade kostnad överskrider cost threshold for parallelism värdet och sedan kan välja en billigare parallell plan.

Begränsningar

SQL Server ignorerar värdet cost threshold for parallelism under följande villkor:

  • Datorn har bara en logisk processor.

  • Endast en enda logisk processor är tillgänglig för SQL Server på grund av konfigurationsalternativet affinity mask .

  • Serverkonfigurationsalternativet max degree of parallelism är inställt på 1.

Recommendations

Det här alternativet är ett avancerat alternativ och bör endast ändras av en erfaren databasproffs.

Standardvärdet 5 för är en startpunkt, inte en rekommendation. På moderna SQL Server-system kan höjningen bidra till att mindre OLTP-frågor körs med serieplaner. Använd små steg och observera en fullständig konjunkturcykel innan ytterligare ändringar. Utför programtestning med högre och lägre värden om det behövs för att optimera programmets prestanda.

Anmärkning

I Azure SQL Database kan du inte ange cost threshold for parallelism. Använd MAXDOP för att styra parallellitet i stället. Mer information finns i Ändra standard-MAXDOP i Azure SQL Database och Azure SQL Managed Instance.

I vissa fall kan en parallell plan väljas även om frågans plankostnad är mindre än det aktuella cost threshold for parallelism värdet. Beslutet att använda en parallell plan eller serieplan baseras på en kostnadsuppskattning som angavs tidigare i optimeringsprocessen. Mer information finns i arkitekturguiden för frågebearbetning.

Anmärkningar

Om du vill se om cost threshold for parallelism serverkonfigurationsalternativet är inställt för högt eller för lågt för din arbetsbelastning letar du efter följande indikatorer.

Kostnadströskel för parallellitetsinställning Description
För lågt – För många CPU-ljusfrågor blir parallella.

– I Query Store har is_parallel_plan många planer angetts till 1.

- CXPACKET och CXCONSUMER dominerar väntetypstatistik. Du kan också se THREADPOOL och SOS_SCHEDULER_YIELD vänta.
För högt – Det räcker inte med att arbetsbelastningens cpu-tunga frågor blir parallella och processoranvändningen är högre än optimalt som ett resultat.

- SOS_SCHEDULER_YIELD dominerar väntetypsstatistik.

Permissions

Utför behörigheter på sp_configure utan parametrar eller med endast den första parametern är som standard beviljade till alla användare. Om du vill köra sp_configure med båda parametrarna för att ändra ett konfigurationsalternativ eller för att köra -instruktionen RECONFIGURE måste en användare beviljas behörighet på ALTER SETTINGS servernivå. Behörighet ALTER SETTINGS hålls implicit av de fasta serverrollerna sysadmin och serveradmin.

Använda SQL Server Management Studio

  1. Högerklicka på en server i Object Explorer och välj Egenskaper.

  2. Välj noden Avancerat .

  3. Under Parallellitet ändrar du alternativet cost threshold for parallelism till önskat värde. Skriv eller välj ett värde mellan 0 och 32 767.

Använd Transact-SQL

Det här exemplet visar hur du använder sp_configure för att ange värdet cost threshold for parallelism för till 20.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'cost threshold for parallelism', 20;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

Mer information finns i Server-konfigurationsalternativ.

Följ upp: När du har konfigurerat kostnadströskeln för parallellitetsalternativet

Inställningen börjar gälla omedelbart utan att servern startas om.