SQL 2005 langsam bei grosser Tabelle

03/06/2008 - 08:34 von Allan A. Schumann | Report spam
Hallo Newsgroup!

Wir haben hier einen SQL Server 2005 (x64, Standart Editon) am laufen.

Ein kleines Problem mit einer Tabelle ist nun aufgetaucht. Und zwar enthàlt
die Tabelle rund 10 Spalten und 100'000 Zeilen. Eine dieser Spalten ist
nvarchar(MAX) und enthàlt HTML Seiten. Nun ist diese Tabelle auf 20GB Daten
angewachsen. Bis zu diesen 20GB lief es noch einigermassen problemlos. Seit
aber diese grösse überschritten ist dauert jede SELECT Anfrage mehere
Minuten. DELETE geht schon in die Stunden. Unter den 20GB sind wir im ms
Bereich.

Damit wir jetzt nicht die ganze Zeit Symptombekàmpfung machen und einfach
immer wieder was àndern bis es wieder làuft, nur um dann wieder ein neues
Problem zu bekommen, möchte ich jetzt gerne eure Meinungen und Vorschlàge
hören. Ich möchte das Problem irgendwie dauerhaft lösen können. Aber die
erste Frage wàre nun wirklich ist es wirklich möglich das eine Tabelle über
20GB einfach zu gross ist?

Vielen Dank für euer Feedback!

Gruss,
Allan
 

Lesen sie die antworten

#1 Elmar Boye
03/06/2008 - 09:28 | Warnen spam
Hallo Allan,

Allan A. Schumann schrieb:
Wir haben hier einen SQL Server 2005 (x64, Standart Editon) am laufen.

Ein kleines Problem mit einer Tabelle ist nun aufgetaucht. Und zwar enthàlt
die Tabelle rund 10 Spalten und 100'000 Zeilen. Eine dieser Spalten ist
nvarchar(MAX) und enthàlt HTML Seiten. Nun ist diese Tabelle auf 20GB Daten
angewachsen. Bis zu diesen 20GB lief es noch einigermassen problemlos. Seit
aber diese grösse überschritten ist dauert jede SELECT Anfrage mehere
Minuten. DELETE geht schon in die Stunden. Unter den 20GB sind wir im ms
Bereich.



Einige weitere Informationen zur Tabellenstruktur und
über die Zugriffsarten wàren nützlich.

Wie erfolgen die typischen Zugriffe auf die Tabelle -
Einzeilig (WHERE PK = ?) oder über mehrere Zeilen
und wenn letzteres sind diese indiziert?

Enthàlt die Tabelle nur PK, LOB Spalte oder auch weitere
Spalten, auf die unabhàngig zugegriffen wird?

Damit wir jetzt nicht die ganze Zeit Symptombekàmpfung machen



Grundsàtzlich zu empfehlen wàre eine Index Reorganisation via
ALTER INDEX ... WITH ( LOB_COMPACTION = ON )
(vermutlich was fürs Wochenende)

Làngerfristige Maßnahmen wàre das verlagern der Textdaten in
eine eigene Dateigruppe.
Evtl. ist auch eine Partitionierung denkbar, wenn die Daten
historisch oder anderweitig gruppierbar sind.

Aber die erste Frage wàre nun wirklich ist es wirklich möglich
das eine Tabelle über 20GB einfach zu gross ist?



Mitnichten. Wichtig wird bei der Größe nur das die Zugriffe nicht dazu
führen, dass permanent alle Texten-Daten abgerufen werden. Denn
sonst kann es zum Effekt kommen, dass die LOB Daten alles andere
aus dem Cache werfen.
Um das zu verifizieren, solltest Du mal die Speicherverwendung
via Systemmonitor bzw. die Systemsichten überprüfen.

Achten sollte man deswegen auch auf die Zugriffe durch die Client-
Programme. Speziell ob die Abfragen die LOB Daten auch abrufen,
wenn sie eigentlich nicht (sofort) benötigen. Ein "SELECT *"
sollte schon gar nicht vorkommen.


Vielen Dank für euer Feedback!

Gruss,
Allan


Ähnliche fragen