Zoals Kaboing al zei, MAXDOP(n)
controleert feitelijk het aantal CPU-cores dat in de queryprocessor wordt gebruikt.
Op een volledig inactief systeem zal SQL Server proberen de tabellen zo snel mogelijk in het geheugen op te halen en ze in het geheugen samen te voegen. Het kan zijn dat je dit in jouw geval het beste kunt doen met een enkele CPU. Dit kan hetzelfde effect hebben als het gebruik van OPTION (FORCE ORDER)
waardoor de query-optimizer de volgorde van joins moet gebruiken die u hebt opgegeven. IN sommige gevallen heb ik OPTION (FORCE PLAN)
. gezien verminder een query van 26 seconden naar 1 seconde uitvoeringstijd.
Books Online zegt verder dat mogelijke waarden voor MAXDOP
zijn:
0 - Gebruikt het werkelijke aantal beschikbare CPU's, afhankelijk van de huidige systeembelasting. Dit is de standaardwaarde en aanbevolen instelling.
1 - Onderdrukt het genereren van parallelle plannen. De bewerking wordt serieel uitgevoerd.
2-64 - Beperkt het aantal processors tot de opgegeven waarde. Afhankelijk van de huidige werkbelasting kunnen er minder processors worden gebruikt. Als er een waarde wordt opgegeven die groter is dan het aantal beschikbare CPU's, wordt het werkelijke aantal beschikbare CPU's gebruikt.
Ik weet niet zeker wat het beste gebruik van MAXDOP
is, maar ik zou een gok nemen en zeggen dat als je een tabel hebt met 8 partities erop, je MAXDOP(8)
zou willen specificeren vanwege I/O-beperkingen, maar ik kan het mis hebben.
Hier zijn een paar snelle links die ik heb gevonden over MAXDOP
:
Online boeken:mate van parallellisme
Algemene richtlijnen voor het configureren van de MAXDOP-optie