2010-06-30 9 views
0

J'ai une requête de transformation de données qui dure longtemps sur ma machine de développement (Core i7 920 tournant à 3.9GHz, et avec 12Go de RAM sous Windows Server 2003 x86 et avec 2 vélociraptors 300GB in RAID0). Lorsque je regarde le gestionnaire de tâches, le CPU reste autour de 26%, le troisième (sur 4) étant le plus actif. Comme il ne s'agit pas d'un environnement de production, y a-t-il un moyen de dire à SQL Server 2008 que j'utilise mieux mon processeur ou parce que ma requête ne peut pas être parallélisée pour quelque raison que ce soit? Si SQL Server ne doit pas être assez intelligent pour couper la requête en plus petits morceaux et l'exécuter sur plusieurs threads afin que chaque noyau puisse l'obtenir?Comment puis-je forcer SQL Server à utiliser plus de CPU

Merci.

+0

Pouvez-vous publier les détails de la requête et certaines données sur les tables que vous interrogez? Des choses comme les tailles de table, les index définis etc ... – Oded

+0

http://stackoverflow.com/questions/3038067/get-non-overlapping-dates-ranges-for-prices-history-data/3038275#3038275

Répondre

2

Optimisez votre requête. Les chances sont que le problème est avec elle et non pas SQL Server.

+0

Il ne peut pas être beaucoup plus optimisé que cela, malheureusement, basé sur les questions précédentes posées là. –

+0

@Kharlos Dominguez - et toutes les tables sont correctement indexées? Et vous ne faites pas de longues tâches avec SQL? – Oded

+0

@Kharlos Dominguez Vous devez optimiser votre requête pour permettre son partage sur plusieurs threads. Cela peut en fait impliquer une désoptimisation. Sans voir la requête et le plan d'exécution, il est impossible d'en dire plus. –

0

Vous savez déjà que tout va bien, sauf si vous l'avez spécifiquement limité à l'utilisation d'un certain nombre de processeurs, que ce soit via la configuration ou via le réglage du paramètre MAXDOP.

Il semble que vous puissiez être contraint par vos disques durs ou votre mémoire plus que tout. Notez que parce que vous exécutez une version x86 de Windows (et par extension serveur SQL), vous pouvez être limité à environ 3 Go de mémoire vive. Et même avec les PAE (extensions d'adressage physiques) activées, il y aura un monde de différences plus lent que si vous avez un système d'exploitation x64 et SQL Server pour commencer. En d'autres termes, vous pouvez envisager de réinstaller la machine à partir de zéro pour tirer parti de toutes les qualités x64 dont vous disposez.

+0

Merci. Cependant, je ne vois pas beaucoup d'activité du disque dur et tout le reste fonctionne vite ... ma matrice RAID offre 200 Mo/s et je peux travailler sur d'autres choses sans problèmes à une vitesse presque normale. –

+0

Si tel est le cas, vous devez également savoir que le serveur SQL utilisera uniquement plusieurs processeurs en fonction de la parallélisation de la requête. Si la requête ne peut être séparée que par 2 ou 3 processeurs, c'est tout ce que sql server utilisera. – NotMe