Gawan Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Hallo, folgende Situation: Ich habe eine Xeon CPU mit 4 Kernen und 8 Threads. Darauf läuft ein SQL Server 2005 Developers Edition der auf 8 Prozessoren konfiguriert ist. Ich habe 8 SQL-Statements die mir 8 unabhängige Summen aus der gleichen Tabelle berechnen (eine Kennmzahl pro Jahr). Jedes Statement läuft ca. 10 Minuten. Ich führe diese 8 Statements derzeit in einer StoredProcedure aus. Der Compiler setzt sie dabei sequentiel hintereinander --> Laufzeit von 80 Minuten, es wird nur EINE der 8 verfügbaren CPUs genutzt (die dafür zu 100% ausgelastet) Wenn ich die 8 Statements in 8 unabhängige Queries zerteile und händisch zeitgleich starte, dann laufen die 8 Queries parallel auf 8 Prozessoren (alle 8 auf 100%) und die Laufzeit beträgt in Summe ca. 12 Minuten. Wie bringe ich den SQL Compiler dazu diese 8 Befehle ebenfalls parallel auszuführen ? Ich verstehe nicht warum der das nicht sowieso von selbst macht Danke im Voraus Gawan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Buell Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Hi, naja, in der SP wird halt nacheinander abgearbeitet. Pack das in ein SSIS-Paket, da kannst Du alle 8 "gleichzeitig" ablaufen lassen. Deine Frage war aber eher, warum ein SQL-Statement nur ein Prozessor verwendet. Kann sein, dass der Server dazu sogar konfiguriert ist: 'max degree of parallelism' ist das Stichwort. Vorher würde ich aber an den Abfragen selber noch schauen (Ausführungspläne). hth Buell Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gawan Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Ins SSIS hab ichs jetzt auch gelöst. Das funktioniert mit 8 parallelen jobs auch - allerdings hab ich jetzt auch den gleichen Bedarf für 100 Jobs und die möchte ich nicht als eigenständige SSIS-DataFlows anlegen müssen. Das muss doch auch irgendwie im T-SQL gehen. Ich möchte diese Jobs auch nicht vie Scheduler anstoßen, sondern via einer anderen Stored Procedure ... und das geht ja wohl nicht im SSIS Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gawan Geschrieben 25. Februar 2010 Autor Teilen Geschrieben 25. Februar 2010 MAXDOP hat leider gar nix geändert, auch ein Versuch mit UNION nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.