it-swarm.com.de

Wie wahrscheinlich ist es, dass eine Fragmentierung einer Tabelle mit 40000 Produkten die Leistung beeinträchtigt?

Die Datenbankverwaltung ist also keine Stärke von mir, daher habe ich einige Fragen.

Dies alles bezieht sich auf die Leistung einer Website, die ich gerade betrachte, und ich habe ziemlich viel Zeit damit verbracht, zu recherchieren/zu diagnostizieren.

  • Es gibt zwei Sites, eine Test-Site und eine Live-Site.
  • Ich habe festgestellt, dass die Ladezeiten von Seiten auf der Live-Site im Gegensatz zur Test-Site viel länger sind.

  • Die Spezifikationen der Testsite sind sehr niedrig - virtuelle VPS 2-Prozessoren mit 14 GB RAM und SQL + -Website, die auf demselben VPS ausgeführt wird)

  • Die Spezifikationen der Live-Website sind 4 dedizierte Server, alle mit 8 virtuellen Prozessoren und 16 GB RAM

  • Die Live-Site verwendet einen separaten dedizierten Server für SQL mit 16 virtuellen Prozessoren und 112 GB RAM

  • Die Website hat durchschnittlich 120 gleichzeitige Benutzer im Durchschnitt zu einem Zeitpunkt, kann jedoch zwischen 70 und 150 schwanken. Wenn wir eine E-Mail-Kampagne versenden, kann sie 400 erreichen. Wenn wir 400 erreichen, kann der erwartete CPU-Wert 100% erreichen, je nachdem, welche Aktionen Benutzer ausführen tun auf der Website, aber sie halten ziemlich gut mit dem RAM.

Ich würde erwarten, dass die Live-Website tatsächlich schneller als die Test-Website ist, aber dies ist nicht der Fall. Ich habe den Code durchgesehen, aber ich bin fest davon überzeugt, dass dies an der Datenbank liegt. Die Datenbankgröße der Live-Website beträgt beim Sichern mehr als 50 GB, und die Testwebsite beträgt 4 GB.

Beide Datenbanken sind ziemlich fragmentiert, und ich frage mich, wie wahrscheinlich die Fragmentierung die Leistung beeinflusst.

Auch weil die Live-Website um ein Vielfaches größer als die Test-Site ist, wird eine hohe Fragmentierung die Leistung der Live-Site viel stärker beeinträchtigen als die der Test-Site?

Hier ist eine Erfassung eines der Indizes in der Produkttabelle. (enter image description here

Da ich mich noch nie damit befasst habe, gibt es einige Tipps zum Wiederherstellen/Aktualisieren von Indizes.

Sollte ich die Website in den Wartungsmodus versetzen, damit niemand mit Tabellen interagieren kann, während ich Indizes neu erstelle/aktualisiere?

Wie lange würde eine Tabelle mit 12 Indizes und 40000 Produkten dauern?

Vielen Dank

5
chris c

Basierend auf den von Ihnen angegebenen Daten -

insgesamt gibt es 67 Seiten. Die Indexfragmentierung für eine so kleine Tabelle würde die Leistung nicht beeinträchtigen. Ich würde mir keine Sorgen um die Indexfragmentierung der von Ihnen erwähnten Tabelle machen.

Sie sollten Ihre Tabellenstatistik aktualisieren, damit der SQL Server einen besseren Abfrageplan generieren kann.

Ich würde meine Fehlerbehebung durch beginnen

Lesen Sie: Machen Sie sich keine Sorgen mehr um die SQL Server-Fragmentierung

11
Kin Shah

Indizes sind im Laufe der Nutzung (Zeit) an Fragmente gebunden. Was zählt, ist, ob es die Leistung beeinträchtigt.

Normalerweise kümmern wir uns nicht um Indizes mit page_count <500. (Wir wie in meinem Team) Es gibt jedoch keine feste Regel für einen bestimmten page_count. In meinem vorherigen Shop hatten wir das Limit in unserem Ola-Skript auf 1000 festgelegt Seitenzahl. Aber ja, bei einem Index mit page_count = 67 befindet sich die Fragmentierung immer auf der höheren Seite.

Sie sollten sich keine Sorgen über die Fragmentierung bei der aktuellen page_count machen.

Bitte schauen Sie sich den folgenden Blogpost von Paul Randal an:

Woher stammen die Schwellenwerte für die Fragmentierung des Books Online-Index?

4

Der Hauptunterschied zwischen Ihrem Testserver und dem Live-Server ist Concurrency.

Sie haben Concurrency Test nicht in Ihrem Testserver durchgeführt.

Concurrency ist einer der Hauptgründe dafür, dass Live Site langsam ist.

Welcher Code in der Front-End-Anwendung geschrieben ist, wie der, den Sie in der Verbindungszeichenfolge geschrieben haben. Mögen connection pool, ob connection nach jeder Transaktion richtig close ist. Dies ist häufig der Hauptgrund für die Langsamkeit.

Dann Ihr anderer Teil des Front-End-Codes.

Welche Abfrage ist in Ihrem SP geschrieben? Gibt ein deadlock Problem aufgrund eines gleichzeitigen Benutzers an.

Gibt es eine Situation, in der gleichzeitig Benutzer versuchen, denselben Satz von Zeilen zu aktualisieren? Wie haben Sie mit der Rennbedingung umgegangen?

Warum gibt es 12 index in einer einzelnen Tabelle mit nur 40000 Aufzeichnungen?

Bitte werfen Sie die Tabellenstruktur zusammen mit allen Indizes.

3
KumarHarsh