Hallo zusammen,
ich habe ein sehr seltsames Performance-Problem.
Ich exportiere Daten aus einer internen Tabelle über Native-SQL-Statements an eine MS-SQL-Server-Datenbank. Es geht dabei höchstens um ein paar Tausend Datensätze.
Das sieht z.B. so aus:
Code: Alles auswählen.
EXEC SQL.
INSERT INTO SAP_Input_Wochenbericht
(
Tagesdatum,
Verkaufsbuero,
Markt,
Auftraggeber,
Materialnummer,
AE_Nettowert,
Offen_Nettowert,
Nettowert,
Umsatz_Nettowert,
Retouren_Nettowert,
Gutschrift_Nettowert
)
VALUES
(
:jha_data_wb-SPTAG,
:jha_data_wb-VKBUR,
:markt,
:jha_data_wb-KUNNR,
:jha_data_wb-MATNR,
:jha_data_wb-AENETWR,
:jha_data_wb-OAUWE,
:jha_data_wb-NETWR,
:jha_data_wb-UMNETWR,
:jha_data_wb-RENETWR,
:jha_data_wb-GUNETWR
)
commit
ENDEXEC.
Nun läuft das Programm auf unserem Testsystem problemlos und sehr schnell.
Auf dem Produktivsystem läuft
dasselbe Programm, das
dieselben Daten an
denselben SQL-Server schickt, nur noch sehr schleppend. Es schafft vielleicht noch 5-10 INSERTs pro Sekunde. Das Programm auf dem (viel langsameren) Testsystem ist mindestens um Faktor 20-30 schneller.
Nun fiel mir auf, dass eine andere Reportvariante, die ich mit diesem Programm ausgebe, auch auf dem Produktivsystem äußerst performant läuft. Der einzige Unterschied: Das Tagesdatum wird nicht mit übergeben.
Zunächst dachte ich also, es läge am Feld "Tagesdatum" (jha_data_wb-SPTAG), bis ich dann herausfand: Wenn ich eines der 10 Felder auskommentiere (egal welches), läuft alles genau so schnell wie es sein sollte.
Also hat es evtl. mit der Länge des SQL-Statements zu tun? Oder mit der Anzahl der übergebenen Felder? Aber warum dann nur auf dem Produktiv- und nicht auf dem Testsystem? Ersteres ist ja hardwaretechnisch weit besser ausgestattet.
Gibt es evtl. Profilparameter, die so ein Verhalten erklären könnten?
Ich bin über jeden Hinweis dankbar, denn das Problem treibt mich zur Verzweiflung.
Vielen Dank!
Jens