Démarrer les procédures stockées de manière séquentielle ou parallèle

Nous avons une procédure stockée qui exécute tous les soirs, qui à son tour lance un certain nombre d'autres procédures. Certaines de ces procédures pourraient logiquement être exécuté en parallèle avec d'autres.

  • Comment puis-je indiquer à SQL Server de savoir si une procédure doit être exécutée en parallèle ou en série — c'est à dire: a débuté de manière asynchrone ou le blocage?
  • Quelles seraient les implications de l'exécution en parallèle, en gardant à l'esprit que j'ai déjà déterminé que le processus ne sera pas en concurrence pour l'accès à la table ou verrouille - seulement total d'e /s disque et de la mémoire. Pour la plupart, ils ne sont même pas utiliser les mêmes tables.
  • Importe-t-il si certaines de ces procédures sont les même procédure, juste avec des paramètres différents?
  • Si je commence une paire ou des procédures de manière asynchrone, est-il un bon système de SQL Server pour ensuite attendre les deux d'entre eux à la fin, ou dois-je besoin d'avoir chacun d'entre eux un drapeau quelque part et de vérifier et d'interroger le drapeau périodiquement à l'aide de WAITFOR DELAY?

Pour le moment, nous sommes toujours sur SQL Server 2000.

Comme une note de côté, c'est important parce que la procédure principale est lancé en réponse à l'achèvement d'un vidage des données dans le serveur à partir d'un système central. L'ordinateur central de vidage prend tous, mais environ 2 heures chaque nuit, et nous n'avons aucun contrôle sur elle. En conséquence, nous essayons constamment de trouver des moyens de réduire les délais de traitement.

source d'informationauteur Joel Coehoorn