Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

T-SQL: SQL Abfrage parallelisieren

Empfohlene Antworten

Veröffentlicht

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

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

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 :(

MAXDOP hat leider gar nix geändert, auch ein Versuch mit UNION nicht

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.