Veröffentlicht 24. Februar 201015 j 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
24. Februar 201015 j 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
24. Februar 201015 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.