Dr.Verpeilung 10 Geschrieben 1. August 2012 Melden Teilen Geschrieben 1. August 2012 Hallo zusammen, zu folgendem Szenario würde ich mich gerne mit euch austauschen: Wir haben bei einem Kunden eine recht große Datenbank mit einer Tabelle von ca. 60 Millionen Rows. Diese Tabelle enthält zwei Indizes: - ID (clustered-index, unique) - Name (non-clustered index, non unique) Die Abfrageperformance ist sehr gut... Das Anzeigen eines Datensatzes dauert weniger als eine halbe Sekunde... Allerdings sind die INSERTS katastrophal. Das Einfügen von 10.000 Datensätzen dauert ca. 250 Sekunden. Wenn ich die Indizes lösche, dauert der INSERT nur noch 20 Sekunden... Also mehr als Faktor 10 schneller. Auch wenn ich aus beiden Indizes einen non-clustered Index mache, ist der Insert langsam. Vermutlich weil die Indizes neu berechnet werden müssen... Oder liegt es am UNIQUE Index? Hat jemand Tipps? Solche Datenmengen können ja nicht das Ende der SQL Performance sein... Viele Grüße Dr.Verpeilung Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 1. August 2012 Melden Teilen Geschrieben 1. August 2012 Werden des öfteren 10k Datensätze eingefügt? Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 1. August 2012 Autor Melden Teilen Geschrieben 1. August 2012 Ja, 10k Rows sind eher wenig... Einmal im Monat werden zum Rechnungslauf in 2 Tagen rund 1.000.000 Rows angelegt... Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 1. August 2012 Melden Teilen Geschrieben 1. August 2012 Das sollte mit einer Zwischentabelle ohne Indexe gehen oder vor dem Insert die Indexe löschen und danach wieder erstellen. Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 1. August 2012 Autor Melden Teilen Geschrieben 1. August 2012 Gibt es keine Möglichkeit, das Reorganisieren o. ä. der Indizes zu deaktivieren und dann jede Nacht den Index neu zu erstellen? Quasi das was Zeit kostet auszulagern? Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 1. August 2012 Melden Teilen Geschrieben 1. August 2012 Moin, man könnte auch versuchen, das Problem auf der I/O-Ebene zu lindern, denn wahrscheinlich ist es nicht die Berechnung, sondern das Schreiben, was die Verzögerung verursacht. Die Indizes sollten in so einem Fall physisch getrennt von den Tabellen liegen, und das Transaction Log braucht hohe Schreib-Performance. Gruß, Nils Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 1. August 2012 Autor Melden Teilen Geschrieben 1. August 2012 Aber schreibt er denn den kompletten Index neu? Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 1. August 2012 Melden Teilen Geschrieben 1. August 2012 Moin, das kommt darauf an. Das Index-Handling ist nicht in ein paar Sätzen erklärt und daher kein geeignetes Thema für ein Forum. Du findest in der Online-Hilfe und im Web eine ganze Menge dazu. Jedenfalls hast du ja offenkundig ein I/O-Problem mit deinen Indizes, und darauf bezog ich mich. Näheres kann man ohne Detailanalyse kaum sagen, und das ist wiederum ebenfalls kein Thema für ein Forum. Gruß, Nils Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 1. August 2012 Autor Melden Teilen Geschrieben 1. August 2012 Hmmm, okay. Dass es am Index liegt ist klar, aber wie kommst du darauf, dass es am I/O liegt? Nur weil der INSERT langsam ist? Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.