Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

UPDATE-Befehl. Dauer mit 2 identische Tabellen ist unterschiedlich. Warum?

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Viacheslav, 1 April 2021.

  1. Viacheslav

    Viacheslav Neuer Benutzer

    Hallo Leute,



    ich habe eine Situation, die ich selber nicht erklären kann.

    Es gibt eine Tabelle (Zieltabelle) mit ca. 5,6 Millionen Datensätze, der tägliche Datenzuwachs beträgt durchschnittlich 1,3 Tausend Datensätze.

    Daten in dieser Tabelle werden aktualisiert, dafür werden gruppierte Daten aus einer anderen Tabelle (Quelltabelle, 38 Tausend gruppierte DS, 42 Tausend, wenn die Daten nicht gruppiert sind) genommen (INNER JOIN-Befehl)



    Bei der Aktualisierung sind ca. 17 Tausend Datensätze in Zieltabelle betroffen.



    Wenn die Aktualisierungsabfrage ausgelöst ist, dauert es ca. 1200 Sekunden!

    Es ist unglaublich viel. Als ich die Ursache gesucht habe, habe ich eine identische Kopie der Zieltabelle erstellt, und derselbe Abfrage ausgelöst.

    Mit einer Kopie der Zieltabelle dauerte es erst 1 Sekunde!

    Ich habe alles geprüft. Alle Eigenschaften der Zieltabelle und der Kopie sind identisch.

    Die Daten sind auch identisch. Ein Unterschied war in Indizes-Fragmentierung, der Wert in beiden Fällen war aber unter 1%.

    Die Indizes habe ich trotzdem neugebildet (REBUILD), das hat aber nicht geholfen.



    Laut Ausführungsplan für Aktualisierung der Zieltabelle 100% Kosten sind für "Clustered Index Scan" gebraucht, 0 % für "Clustered Index Update" (Dauer - 1200 Sekunden)

    Laut Ausführungsplan für Aktualisierung der Kopie von Zieltabelle 43% Kosten sind für "Clustered Index Scan" gebraucht, 54 % für "Clustered Index Update" (Dauer - 1 Sekunde)

    Die Ausführungspläne enthalten auch andere Teile noch, die Prozentteil ist aber sehr gering. Die Ausführungspläne sehen unterschiedlich aus.

    Version von SQL Server ist 10.50.4000.

    Hat jemand eine Idee, wo kann die Ursache liegen?
     
  2. dabadepdu

    dabadepdu Datenbank-Guru

    Deine Beschreibung ist zwar ausführlich, trotzdem dünn bzw. unpräzise bzw. unvollständig. Wenn Du es nicht heraus findest, obwohl Du es vor der Nase hast, wie sollen wir es herausfinden, anhand Deiner unscharfen Beschreibung?
    Da es einen Unterschied geben muss, wäre die Frage, was genau für Dich "identisch" bedeutet. Du könntest die "identische Struktur" beider Tabellen ja hier angeben. Dann müsste man nicht raten.
    Um diesen Beitrag etwas hilfreicher zu gestalten: Du könntest auch oder wenigstens verraten, wie Du diese identische Kopie erstellt hast.
     
    Viacheslav gefällt das.
  3. Viacheslav

    Viacheslav Neuer Benutzer

    Hallo,
    sorry. Die Test-Tabelle wurde mit dem derselben "CREATE"-Skript gemacht. Dann wurden die Daten (Einschließlich ID-Werte) mit "INSERT INTO" hinzugefügt.
    Allen Eigenschaften danach wurden manuell geprüft. Alles war identisch.

    Das Problem aber wurde gelöst. Nach Statistik Update in der Zieltabelle ist Abfragedauer genauso schnell wie für die Kopie.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden