Jump to content

Datenbank Wartung?


Recommended Posts

Guten Morgen,

ich habe eine Frage zu einer MS SQL Datenbank. Ich persönlich komme aus dem Interbase / Firebird Umfeld. Unsere Datenbanken sind alle MS Sql basierend. Sie werden schon über Jahre betrieben. Sie sind indiziert, zwar mit Indezes aus mehreren Feldern davon halte ich gar nichts, aber sie haben Indezes. Unsere Kollegen beschweren sich aber immer mehr, dass Wartezeiten auf Daten aus der Datenbank teilweise lange dauert. Ich kann keine Fehler in der Datenbank entdecken. Im "Activity Monitor" sehe ich aber SQL Statements, meistens Updates bzw. Inserts, die bis zu 4 Sekunden dauern.

 

Eine Firebird Datenbank würde man bei diesen Symptomen mit einen BackUp / Restore wieder reorganisieren, wegen den internen Transaktionsketten.

 

Geht dies auch mit SQL Datenbanken? Welche Möglichkeiten habe ich hier?

 

Ich muss mich auf MS SQL Datenbanken einarbeiten.

 

Danke für Eure Hilfe.

Torsten

Link to post

Hallo

möglicherweise sind die Indexe defragmentiert oder die dazugehörigen Statistiken veraltet.

Es gilt zu prüfen ob ein Index auch verwendet wird bzw. werden kann. Hilfreich ist dabei das SQL Server Management Studio. 

Hast du das zur Verfügung?

 

Link to post

Moin,

 

ja, in MS SQL gibt es sehr viele Hilfsmittel, um eine Datenbank zu optimieren oder deren Performance zu diagnostizieren. Diese "auf Verdacht" zu verwenden, wird aber vermutlich nicht helfen.

 

Um den ersten Überblick zu gewinnen, empfehle ich die Sachen von Brent Ozar: https://www.brentozar.com/blitzcache/ 

 

Speziell auf die Wartung von Indizes und Statistiken konzentriert sich die Lösung von Ola Hallengren: https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html 

 

 

Link to post

Okay wer lesen kann ist klar im Vorteil. Du schreibst vom Activity Monitor- also hast du das Studio.

Du kannst im Studio über den Objekt Explorer die Fragmentierung eines Index in seinen Eigenschaften / Fragmentierung nachsehen.

Und du kannst schauen ob die Statistiken veraltet sind. 

 

Das Reorganisieren bzw. Neuerstellen kannst du entweder über das Objektexplorer vornehmen oder per Script

Abhängig von der Eingesetzten SQL Version entweder mit Alter Index 

https://docs.microsoft.com/de-de/sql/t-sql/statements/alter-index-transact-sql?view=sql-server-ver15

oder

dbcc dbreindex

https://docs.microsoft.com/de-de/sql/t-sql/database-console-commands/dbcc-dbreindex-transact-sql?view=sql-server-ver15

 

  • Like 1
Link to post

Danke für die Informationen. Ich werde mir diese in den nächsten Tagen genau anschauen.

 

Vielen Dank

Noch eine Frage: Wenn ich die Datenbank mit BackUp / Restore bearbeite, werden dann die Indizes defragmentiert?

Und etwaige Fehler auch behoben???

Link to post

Moin,

 

man würde beim SQL Server (und bei nahezu allen anderen Datenbanken) jedenfalls kein Restore machen, um Performanceprobleme, fragmentierte Indizes oder ähnliches zu lösen. Dafür gibt es erheblich bessere Mechanismen, die hier ja auch schon genannt wurden.

 

Gruß, Nils

 

  • Like 1
Link to post

Das SSMS zeigt auch an, ob Indizes fehlen, und wenn welche fehlen, welche genau. Dazu im Studio einen Rechtsklick auf den Server/Instanz und dann über Berichte > Leistungsdashboard ganz unten den Link Fehlende Indizes anklicken. Das sind Vorschläge, ob man die Indizes anlegt oder bestehende erweitert, muss man in jedem Fall VORHER prüfen!

Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...