Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

SQL Datenbank zu 99 Prozent fragmentiert

Frage Entwicklung Datenbanken

Mitglied: V-FSI09

V-FSI09 (Level 1) - Jetzt verbinden

23.02.2011 um 10:46 Uhr, 10822 Aufrufe, 9 Kommentare

Hallo zusammen,

ich habe folgende Konstellation. Aktuell läuft die Datenbank auf einem SQL Server 2000.
Ziel ist es die Datenbank auf einem SQL Server 2008 zum Laufen zu bringen und das performant.

Mein Problem:
Nach dem Übertragen/Wiederherstellen der DB auf dem neuen Server ist die Performance nicht spürbar besser.
Die Ausgabe des Befehls "dbcc showcontig" zeigt deutlich, dass die Datenbank sehr stark fragmentiert sind.
Hier ein Auszug einer Tabelle zu dem Befehl:

Die TABLE-Ebene wurde gescannt.
- Gescannte Seiten 3269
- Gescannte Blöcke 411
- Blockwechsel 410
- Seiten pro Block 8.0
- Scandichte [Beste Wert:Tatsächlicher Wert] 99.51% [409:411]
- Blockscanfragmentierung 99.76%
- Bytes frei pro Seite (Durchschnitt) 359.2
- Mittlere Seitendichte (voll) 95.56%

Folgende Punkte wurde zur Performancesteigerung schon umgesetzt:
- Die NTFS Blockgröße ist auf 64kB formatiert, so wie es von MS empfohlen wird
- Die MDF und die LDFs liegen auf einer separaten Festplatte
- Reindex brachte keinen erfolg. Defragmentierung der Indizes auch nicht.

Microsoft schreibt zu der Blockscanfragmentierung, dass der Wert zwischen 0 und 10 % akzeptabel ist. (Bei mir 99.76%)
Deshalb denke ich, dass dies mein größtes Problem ist!

Hat jemand eine Idee wie ich die Blockscanfragmentierung in Richtung 0 % verbessern kann?

Besten Dank!
Mitglied: Snowman25
23.02.2011 um 11:00 Uhr
Hallo V-FSI09,

Hast du schonmal die Datenbankfunktion VACUUM ausprobiert? Diese Defragmentieren deine Datenbank normalerweise. Ist auch stark spürbar, wenn der Firefox mal wieder langsam wird. Nachdem ein VACUUM auf die Userdatenbanken (History, Favoriten) losgelassen wurde, rennt er wieder

Gruß
Snow
Bitte warten ..
Mitglied: V-FSI09
23.02.2011 um 11:22 Uhr
Hallo Snow,

kann leider so eine Funktion für den MS SQL Server nicht finden.

Gruß
V-FSI09
Bitte warten ..
Mitglied: Snowman25
23.02.2011 um 11:24 Uhr
Hallo V-FSI09,

schau dir mal den DBCC INDEXDEFRAG-Befehl an.
Ausserdem: http://www.sqlhacks.com/Optimize/Defragment-Data
Gruß
Snow
Bitte warten ..
Mitglied: 32067
23.02.2011 um 11:26 Uhr
Hallo,

bist du dir denn sicher, daß du hier überhaupt an der richtigen Stelle suchst ?

http://msdn.microsoft.com/de-de/library/ms175008.aspx sagt zu dieser Fragmentierung:

Prozentsatz der Blöcke, die beim Scannen der Blattseiten eines Indexes nicht richtig einsortiert waren. Diese Zahl ist für Heaps nicht relevant. Ein nicht richtig einsortierter Block ist ein Block, für den der Block, der die aktuelle Seite eines Indexes enthält, physisch nicht der nächste Block nach dem Block ist, der die vorherige Seite des Indexes enthält.
HinweisHinweis Diese Zahl ist bedeutungslos, wenn der Index mehrere Dateien umfasst.

Also schonmal zwei Situationen, wo dieser Wert nix aussagt.

Wie groß ist denn die DB, wieviel RAM hat der Server ?
Bitte warten ..
Mitglied: V-FSI09
23.02.2011 um 11:53 Uhr
Hi,

der Server läuft auf 64 Bit und hat 8GB RAM, die betroffene DB hat um die 4 GB. Es gibt aber noch weitere DBs also insgesamt so ca. 16 GB MDFs.

Ich werde mal den DBCC INDEXDEFRAG Befehl ausprobieren...
Bitte warten ..
Mitglied: V-FSI09
23.02.2011 um 12:28 Uhr
Ich habe mal bei mir das Script zur Defragmentierung von Indizes ausgeführt und dabei maxfrag auf 5 gestellt.

Siehe: http://msdn.microsoft.com/de-de/library/ms177571.aspx
"Mit DBCC SHOWCONTIG und DBCC INDEXDEFRAG die Indizes in einer Datenbank defragmentieren"


Es wurden keine Indizes gefunden die über 5 % fragmentiert sind.

Somit brachte DBCC INDEXDEFRAG auch nichts.

Jemand noch ne Idee?
Bitte warten ..
Mitglied: MadMax
23.02.2011 um 13:13 Uhr
Hallo V-FSI09,

als Allerweltstip fällt mir noch ein, die Statistiken zu aktualisieren mit "exec sp_updatestats". Hat unter SQL Server 2000 Wunder gewirkt. In neueren Versionen des SQL Server kann man in den Optionen einstellen, daß das automatisch passiert, aber ich weiß nicht, wie die Einstellung ist, wenn Du eine SQL Server 2000 DB da reinbringst, ob das dann eingeschaltet ist. Auch weiß ich nicht, wie zuverlässig die Option ist, auf meinen DBen läuft dieser Befehl jedenfalls immer noch wöchentlich. Und schaden tut es eh nicht

Ob der neue Server unbedingt schneller sein muß, ist eh die Frage. Wir wissen nichts über die Hardware des alten Server und was auf dem alten und neuen Server sonst noch so läuft. Wenn der SQL Server 2000 auf einem nur wenig schwächeren Server lief und die einzige DB und Software war, dann kann es durchaus sein, daß sie auf dem neuen Server mit noch weiteren DBen und vielleicht noch anderen Programmen langsamer läuft. Allein der Wechsel von SQL Server 2000 zu 2008 macht die DB ja noch nicht deutlich schneller.

Und bist Du auch sicher, daß Dein Performanceproblem von der DB an sich herrührt und nicht von Netzwerk, Anwendung, DB-Design, ...? Wenn z.B. Indexe fehlen, wird die DB natürlich langsamer, je voller die Tabellen werden.

Gruß, Mad Max
Bitte warten ..
Mitglied: V-FSI09
23.02.2011 um 13:30 Uhr
Hallo,

den Befehl exec sp_updatestats habe ich auch schon ausprobiert, leider auch ohne Verbesserung.

Auf den den Servern sind sonst keine anderen Programme installiert außer der SQL Server.
Der alte/neue Server ist virtualisiert.

alte VM: Server 2000 32Bit mit SQL 2000 Std. mit 3 GB RAM
neue VM: Server 2008 64Bit mit SQL 2008 Std. mit 8 GB RAM

an den DBs hat sich nichts geändert, habe die lediglich auf den neuen wiederhergestellt.

Der alte SQL lief von Anfang an recht flott.
Die Datenbanken sind ja von Zeit zu Zeit langsamer geworden. Habe gehofft dass die Fehler bei der Übernahme auf den neuen Server nicht mit übernommen werden.... aber dem scheint nicht so, obwohl der neue SQL mehr Leistung bringen sollte durch mehr RAM.

Ich habe vor, zum Produktivstart den SQL Profiler mitlaufen zulassen und die Indexe dann optimieren zu lassen.
Wenn das auch nichts hilft, dann weiß ich nicht weiter...

Grüße
Bitte warten ..
Mitglied: MadMax
24.02.2011 um 13:38 Uhr
Hallo V-FSI09,

erst dachte ich, daß Du AWE nicht eingeschaltet hast, aber der SQL Server 2008 ist ja 64Bit, da brauchst Du das nicht.

Dann aber noch eine Sache: Die Speicheraufteilung (Management Studio, Servereigenschaften, Arbeitsspeicher) solltest Du nicht SQL Server überlassen. Zum einen darf sich SQL Server nicht den ganzen Speicher krallen, zumindest das BS braucht auch ein bissl. Zum anderen sollten sich unterschiedliche SQL Server Instanzen, wenn Du denn mehrere hast, nicht ins Gehege kommen. Sonst kann es sein, daß da Daten ausgelagert und auf der Festplatte rumgeschaufelt werden.

Und wenns das nicht ist, tippe ich mal auf die Indexe

Gruß, Mad Max
Bitte warten ..
Ähnliche Inhalte
Windows 10
gelöst Windows 10-Upgrade bleibt bei 99 Prozent stehen (3)

Frage von achklein zum Thema Windows 10 ...

Router & Routing
99 Prozent Paketverlust beim Netalyzer Performance Test (UDP pakete) (13)

Frage von f0rml0s zum Thema Router & Routing ...

Datenbanken
Automatisierter täglicher Import einer Access Datenbank in SQL (5)

Frage von RichterS zum Thema Datenbanken ...

Windows Server
Hoher Speicherverbraucht der SQL-Datenbanken eines SBS 2011 (12)

Link von StefanKittel zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (26)

Frage von zorlayan zum Thema Windows 10 ...

LAN, WAN, Wireless
Ping u. DNS geht am Rechner nicht mehr (19)

Frage von Kuemmel zum Thema LAN, WAN, Wireless ...

Festplatten, SSD, Raid
Raid 1 2 SSD mit Windows Server 2016 (17)

Frage von jaywee zum Thema Festplatten, SSD, Raid ...