SSIS-Validierung langsam. OLTP OLAP wird auf demselben Server ausgeführt


7

Ich habe vier identische Server 2 werden in der Produktion verwendet und die anderen beiden sind Demo-Maschinen / Notfall-Failover-Boxen. Die leistungsstärkere Maschine, ein 16-Kern-127-Gigs-Ram, hostet sowohl unser Datawarehouse als auch unsere OLTP-Datenbank. Die weniger leistungsstarke Box ist eine 8-Kern-RAM-Box mit 98 GB, die wir für ETL und unseren Datenspeicher verwenden. Das Problem, das ich habe, besteht darin, dass die Integrationsservices der Produktionsserver viel Zeit in Anspruch nehmen, um die Paketvalidierung durchzuführen. Bei einer Abfrage, die in 6 Sekunden zurückgegeben wird, dauert es 40 Sekunden, bis die Paketüberprüfung abgeschlossen ist. Wie Sie sehen, ist es ein ziemlich einfaches Paket. InsertUpdateDelete

Denken Sie daran, dass dies nur das Paket ist, das ich als Beispiel verwende. Alle meine Pakete haben das gleiche Problem, obwohl einige in geringerem Maße. Wenn ich dies ausführe, dauert der Validierungsabschnitt durchschnittlich 40 Sekunden. Ausführungsbeginn

Um dies besser zu testen, habe ich genau das gleiche Paket auf der Schwesterbox ausgeführt, auf dem alle gleichen SQL-Jobs wie auf dieser Box ausgeführt werden. Nur die Validierung vor der Ausführung dauert 0 Sekunden und die Abfrage dauert zwischen 4 und 6 Sekunden.

Um dies weiter zu testen, habe ich die Abfrage für beide Instanzen von SQL Server ausgeführt.

SELECT '{' + CAST(Store_Id AS CHAR(36)) + '}' AS Store_Id
      ,'{' + CAST(ItemGroupDetail_Id AS CHAR(36)) + '}' AS ItemGroupDetail_Id
      ,ItemGroupType_Id
      ,'{' + CAST(Concept_Id AS CHAR(36)) + '}' AS Concept_Id
      ,'{' + CAST(Company_Id AS CHAR(36)) + '}' AS Company_Id
      ,'{' + CAST(ItemGroup_Id AS CHAR(36)) + '}' AS ItemGroup_Id
      ,GroupName
      ,Sort
      ,NameOverride
      ,'{' + CAST(ParentGroup_Id AS CHAR(36)) + '}' AS ParentGroup_Id
      ,Active
      ,'{' + CAST(UserCreated AS CHAR(36)) + '}'  AS UserCreated
      ,'{' + CAST(UserModified AS CHAR(36)) + '}'  AS UserModified
  FROM bos_vAllItemGroups

Die Ausführung auf dem Hauptserver mit aktuellem Live-Datum gibt 63326 Zeilen in durchschnittlich 5 Sekunden und die 50527 Zeilen in 3 Sekunden zurück. Was zu erwarten ist, hat dieser Server viel weniger Aktivität mit den gleichen Spezifikationen, von denen ich erwarten würde, dass er etwas schneller ist. Was ich nicht erwarten würde, ist, dass die Paketvalidierungszeit so viel länger ist als die tatsächliche Laufzeit der Abfrage.

Nach vielem Graben gestern habe ich das Problem vielleicht entdeckt, bin mir aber nicht sicher, wie ich es beweisen soll. Die Produktions-OLTP-Datenbank verwaltet Inhalte für digitale Menütafeln im ganzen Land, die ständig zu Hause anrufen, um nach neuen Inhalten zu suchen. Meistens gibt es nichts zu ändern und die Abfragen, die Sie herausfinden müssen, werden in Millisekunden beendet. Allerdings senden sie über diesen Prozess durchschnittlich 4500 Abfragen pro Sekunde. Könnte dies die Ursache für mein Problem sein? Das große Transaktionsvolumen von unserem Webserver. Wenn ja, wie beweise ich das? Ich habe bereits versucht, diese Datenbanken auf separaten Computern zum Laufen zu bringen, da diese OLTP-Datenbank ebenso wie unser Data Warehouse sehr schnell wächst und es nach all meinen Lektüren als schlechte Praxis angesehen wird, Ihre OLAP- und OLTP-Datenbanken auf demselben Server zu halten.


1
Es ist definitiv eine schlechte Praxis. OLAP und Berichterstellung erzeugen große vorübergehende Lastspitzen auf dem Server. Sie würden den Speicher auch ganz anders einstellen.
ConcernedOfTunbridgeWells

@ConcernedOfTunbridgeWells es macht mein Leben sicherlich schwieriger.
Zane

Durch das Ausführen von Paketen in BIDS / SSDT wird eine zusätzliche langsame Ebene hinzugefügt, damit der Debugger funktioniert. Sicher anzunehmen, dass der langsame Start den Paketen über die Befehlszeile / den SQL-Agenten ähnelt? dtexec.exe /file mypackage /reporting Vsollte einige ausführliche Protokollierung bieten
billinkc

@billinkc Ich führe diese Pakete tatsächlich als Teil eines geplanten Jobs aus, der tagsüber regelmäßig ausgeführt wird und das gleiche Problem hat.
Zane

Antworten:


1

Bei einigen offline Gespräche war Zane der Lage , die zu bestimmen , ob sie eine Verbindung offen halten könnte, würde es die Validierung beschleunigen.

Zu diesem Zweck schlug ich vor, die Eigenschaft im Verbindungsmanager so zu ändern, dass die RetainSameConnection-Eigenschaft Truevon ihrer Standardeinstellung zurückgesetzt wird.


0

Zusammenführen und Sortieren sind notorisch langsam. Ist es möglich, stattdessen eine Abfrage für die OLE-Datenbankquelle zu schreiben, die Verknüpfungen enthält?


Nein ist es nicht. Auch das Problem liegt ausschließlich in der Validierung. Das eigentliche Paket läuft wie gesagt in Sekunden.
Zane
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.