Le parallélisme dans SQL Server
Depuis la version 2019 (15.0) de SQL Server, le parallélisme est géré automatiquement. Vous avez toutefois la possibilité de fixer le nombre de processeurs utilisés par vos bases ainsi que le nombre maximum de threads fonction du nombre de processeurs.
Je vous ai concocté un script Transact-SQL pour ajuster ces valeurs en fonction du nombre de processeurs détectés sur votre serveur :
DECLARE @cpus INT; DECLARE @threads INT; DECLARE @db VARCHAR(255); DECLARE @sql VARCHAR(255); DECLARE dbs CURSOR FOR SELECT name FROM sys.databases; SELECT @cpus=cpu_count FROM [sys].[dm_os_sys_info]; IF @cpus=4 SET @threads= 512 ELSE IF @cpus=8 SET @threads= 576 ELSE IF @cpus=16 SET @threads=704 ELSE IF @cpus=32 SET @threads=960 ELSE IF @cpus=64 SET @threads=1472 ELSE IF @cpus=128 SET @threads=4480 ELSE IF @cpus=256 SET @threads=8576 ELSE SET @threads=0; OPEN dbs; FETCH NEXT FROM dbs INTO @db; WHILE @@FETCH_STATUS = 0 BEGIN SET @sql='USE ['+@db+'];'; EXEC(@sql); EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'max degree of parallelism', @cpus; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'max worker threads', @threads ; RECONFIGURE WITH OVERRIDE; FETCH NEXT FROM dbs INTO @db; END ; CLOSE dbs; DEALLOCATE dbs; GO