flo84
Goto Top

MS SQL Server 2000: CPU-Auslastung steigt bei einer Abfrage auf 100%

Hallo Admins,
hab' vor kurzem von einer kleinen Firma (4 W2k-Clients, 1 Windows XP Server-Client) die Aufgabe bekommen, die EDV bei ihnen zu managen. Bei dem Unternehmen handelt es sich um eine Versicherungsmakler-Firma, die die Software InfoAgent im Einsatz hat. Dieses Programm benötigt einen MS SQL Server (2000 im Einsatz), auf dem die Datenbank liegt - diese Rolle übernimmt der Windows XP-Rechner (zugleich auch noch als "Datei-Server" im Einsatz). Was mir beim ersten Besuch schon aufgefallen ist: eine SQL-Abfrage z. B. der Kundendaten dauert ca. 10 Sekunden, also unangenehm lange. Da der Rechner mit mageren 512MB RAM ausgestattet war, wurde dieser auf 1,5GB aufgerüstet - doch keine nennenswerte Verbesserung (außer, dass das Arbeiten am Server selbst nun sehr flott geht). Jetzt ist mir aufgefallen: sobald ein Client (es können maximal 3 Rechner gleichzeitig zugreifen - sind nur 3 Lizenzen für InfoAgent vorhanden) eine SQL-Abfrage ausführt, zischt die CPU-Auslastung auf 100%, fällt nach Ende der Abfrage wieder auf 0%. Der Prozessor ist ein P4 mit 1,4 Ghz - nicht die Welt, aber dass das trotzdem sooo langsam geht (hatte den SQL-Server schon auf etwas langsameren Kisten zu Testzwecken am Laufen)!? Board ist ein Asus P4B, die Größe der DB beträgt derzeit etwa 100 MB.
Liegt's am Prozessor? Oder vielleicht an der Software InfoAgent? Das ist jetzt die Frage... Wer von euch hatte schon mal solch ein Problem bzw. kann mir einen Tipp geben, wo/wie/was ich nachschauen/ändern kann? Will hier nicht unbedingt einen neuen Server anschaffen, nur dass der SQL-Server flitzt!
Freu mich wieder einmal über eure Hilfe!


Flo

Content-Key: 52021

Url: https://administrator.de/contentid/52021

Printed on: April 18, 2024 at 16:04 o'clock

Member: AndreasHoster
AndreasHoster Feb 19, 2007 at 08:28:03 (UTC)
Goto Top
Ungeschickte Abfragen, ohne Index, mit Wildcards bei Strings können schon sehr unperformant sein.
Wenn dann noch 2 Tabellen verglichen werden kommen sehr schnell exorbitant viele Arbeitsschritte zusammen.

Bei 1,5 GB RAM und 100MB DB-Größe sollte Festplattegeschwindigkeit kein Problem mehr sein (sollte fast alles gecached werden).
Optimierung der Abfragen kann nur der Entwickler machen.
Man kann natürlich schauen, ob Indizes auf gewisse Felder und Tabellen helfen, wobei ich vorher die Firma von InfoAgent fragen würde, ob die Probleme haben, wenn Du an Ihrer Datenbank rumspielst.

Aber die Analyse würde folgendermassen gehen:
Zuerst im Enterprise Manager den SQL Profiler aufrufen, ein Ablaufverfolgung auf Basis der Vorlage SQLProfilerTuning erstellen und dann die Ablaufverfolgung mal einen halben Arbeitstag laufen lassen (je nachdem wie gearbeitet wird auch kürzer oder länger). Dabei wird eine Datei erzeugt, welche alle SQL Statements enthält, die auf die DB losgelassen wird.
Die kann man dann im Enterprise Manager dem Indexoptimierungsassistenten geben. Der Findet sich unter Extras -> Assistenten, dann unter Verwaltung.
Der analysiert dann die SQL Abfragen und die Datenbank und schlägt Indizes vor, die die Abfragen beschleunigen.

Wenn allerdings viel mehr Inserts und Updates als Selects auf die DB gehen, kann der Schuß nach hinten losgehen, weil bei Änderungen ja der Index mitgepflegt werden muß.
Und bei Abfragen mit Wildcards helfen Indizes auch nicht.

Aber einen Versuch ist es wert.
Member: flo84
flo84 Feb 19, 2007 at 09:25:29 (UTC)
Goto Top
Vielen Dank für deine ausführliche Antwort. Ich werde auch mal beim Softwarehersteller nachfragen und sehen, was die mir empfehlen.