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.
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.
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.
dtexec.exe /file mypackage /reporting V
sollte einige ausführliche Protokollierung bietenAntworten:
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
True
von ihrer Standardeinstellung zurückgesetzt wird.quelle
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?
quelle