Top-Themen

Aktuelle Themen (A bis Z)

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-Server 2008 Wartung - Performanceprobleme

Mitglied: westberliner

westberliner (Level 1) - Jetzt verbinden

11.01.2019 um 11:17 Uhr, 589 Aufrufe, 10 Kommentare, 2 Danke

Hallo Zusammen,

ich habe hier ein DMS-System laufen (Accantum), welches auf einer SQL 2008 Datenbank schreibt.

Nun bekomme ich in letzter Zeit immer mehr Probleme, was die Performance angeht. Bei einer Suche eines Dokuments im Frontend bekomme ich hohe CPU-Lasten (90% und höher), die kurz andauern und dann entsprechend natürlich alles verlangsamen. Ich habe leider bisher absolut gar nichts mit SQL-Servern und -Datenbanken am Hut gehabt, daher sind meine Kentnisse bisher hier relativ bescheiden.

Ressourcen habe ich bereits erweitert, die VM hat 32 GB ram und 8 Kerne.

Das DB-Verzeichnis bringt folgende Größen zum Vorschein.

https://administrator.de/images/c/1/5/da883cb0638be503efbe647f10fc33b9.j ...
Es ist ein Maintanance-Plan hinterlegt (wobei hier beim ersten Task keine Verbindung angegeben ist):

https://administrator.de/images/c/1/5/5c6faf60344d194823dfdb68c1727bb5.j ...

Gesichert wird mit Veeam, SQL Log Trunking ist eingeschaltet.

Kann mir jemand helfen die nötigen Schritte auszuführen, damit die Datenbank wieder flott läuft?

Vielen Dank!
acc_db_size - Klicke auf das Bild, um es zu vergrößern
sql maintanance-plan - Klicke auf das Bild, um es zu vergrößern
Mitglied: SlainteMhath
11.01.2019 um 11:30 Uhr
Moin,

so wie das aussieht wurden bei deinem SQL-Server nichtmal die grundlegenden Best Practices eingehalten (DB+Log auf unterschiedl. Disks, tempDB nicht auf eigener Disk z.b.). Evtl wäre es sinnvoll dich als erstes mit dem Support der Applikation und dann ggfs. mit einem Systemhaus (mit SQL Expertise)zu sprechen um dann zusammen die Optimierung des Servers anzugehen.

Abgesehen davon fehlt einiges an Information. Anzahl User, Disk Subsystem und IO Last usw, usw.

lg,
Slainte
Bitte warten ..
Mitglied: SeaStorm
11.01.2019 um 13:16 Uhr
hi

mit den infos kommen wir nicht sonderlich weit.
Dein erster Ansprechpartner sollte der Support des DMS-Systems sein.

Wenn du dich selbst ein bisschen schlau machen willst:
Schau am einfachsten mal in den SSMS Activity Monitor und prüfen, welches Query da so lange braucht.
Dann suchst du dessen Tabellen und lässt seine Indexe mal neu erstellen.
Wenn das nix bringt, musst du mit dem QueryPlanAnalyzer gucken was an dem Query so langsam ist:
https://blogs.msdn.microsoft.com/sql_server_team/new-in-ssms-query-perfo ...

Und dann kommts halt drauf an was es ist....
Bitte warten ..
Mitglied: clSchak
11.01.2019 um 13:52 Uhr
Hi

1. man verkleinert eine DB nur im Worstcase oder nachdem man große Tabellen gelöscht hat, ansonsten sollte man das, vor allem bei der geringen Größe einfach lassen, die Meldung sagt ja bereits aus das es zu Fragmentierung kommt

2. AutoGrow am besten niemals auf % Bereiche stellen, idealerweise auf MB/GB Größen die eine neue Speicherzuweisung nicht so oft erforderlich machen, z.B. 10GB

3. Analysiere die Index-Einstellungen der Datenbank, oft werden seitens der "Hersteller" viele Tabelle mit falschen und gar keinen Indicies ausgestattet und die Abfragen laufen dann richtig kacke (KoFAX z.B. ist in der Grundeinstellung extrem beschisxxxx da muss man einiges von Hand nachsetzen damit das Schnell läuft)

4. Datenbanken verkleinert man nicht - wenn dann einmal und nicht über den Wartungsplaner

5. Anzahl TempDB = Anzahl maximaler Workerthreads, d.h. 8 Cores = 8 DB Files und diese auf schnellen Platten

6. Logs und DB File auf getrennten Laufwerken (nicht nur Partitionen - eigene Storagepfade zu den LUNS)

7. Man verkleinert keine DB's, maximal im Einzelfall (bin mir gerade nicht sicher ob ich das nicht schon geschrieben habe)

....

Besorg dir von Brent Ozar die SP Blitz Tools (https://www.brentozar.com/blitz/) , das wird auch schon einiges helfen - auch weiteren Fehlern auf die Schliche zu kommen.

Just my 2 Cent
@clSchak
Bitte warten ..
Mitglied: Grinskeks
11.01.2019 um 14:14 Uhr
Hallo,

32 GB Ram hört sich gut an, die DB ist aber dreimal so groß und keiner weiß, was sonst noch so auf dem Server passiert.
Ist das IO-Subsystem zusätzlich lahm, ist schnell Feierabend.

  • Grundperformance IO-Subsystem messen, insbesondere 8k und 4k Iops (Crystaldiskmark)
  • Perfmon ausführen und avg. Disk Queue Length und Buffer cache hit ratio messen
  • Perfmon standardbericht performance ausführen, wenn gerade was los ist auf dem Server


Der Wartungstask ist nicht gut - man sollte nur in Notfallsituationen produktive DB-Files verkleinern. Das Transaction Log kann abgeschnitten, das Datenwachstum überwacht werden.



Gruss Grinskeks
Bitte warten ..
Mitglied: Looser27
11.01.2019 um 14:23 Uhr
Moin,

wenn Du Deine DBs schon pflegen willst, solltest Du den Wartungsplan folgende Schritte ausführen lassen:

1. Datenbank Integrität prüfen
2. Index neu erstellen
3. Verlauf bereinigen

Hier kann ich Dir gerne eine Anleitung zukommen lassen. PM an mich, dann schicke ich sie Dir.

Ansonsten sollte man die DBs schrittweise vergrößern, wie oben vorgeschlagen, angepaßt an das Wachstum.
Wenn eine DB je Woche um 500MB wächst, dann kann man die natürlich immer um 500MB vergrößern, doch das kostet Leistung.
Lieber 5GB nehmen und danach wieder ausreichend Reserve haben.

Ansonsten gehören LogFiles und DB-Files auf getrennte Volumes. Und schnelle Platten haben SQL-DBs auch noch nie geschadet.

Gruß

Looser
Bitte warten ..
Mitglied: Crusher79
12.01.2019, aktualisiert um 14:30 Uhr
Hi,

32 GB RAM muss man schauen: Durch index rebuild etc. wird der höchstens in Anspruch genommen. Nach Neustart des Dienstes hast du meist nur einen Bruchteil. Nicht die gesamte DB wird komplett in RAM ausgelagert.

Die Frage ist, wenn es bisher lief, ob es wirklich an der H/W, Konfig liegt! Ggf.ist mal was in die Binsen gegangen und du hast einen Nullsatz, etc. in einer Tabelle.

Du kannst mit dem SQL Profiler mit T_Replay die Abfregen mitschneiden. So könntest du auch mal kucken, was an dem Auslösen im Frontend denn wirklcih psasiert. Welche Prozeduren etc. angesprochen werden.

Trivial: Wenn es normal läuft und nur bei Abfragen hängen bleibt, ist ggf. die DB nicht mehr ganz in Takt. Im Profiler sieht man gut die Statements und dauch die Zeitdauer. Man kann auch einfach sp_execute in Abfrege Window kopieren und separat starten. ABER dafür sollte man die SQL Grundlagen können! Query ist meist kein Problem. Update und Insert Statements auf gut Glück aufs neue ausführen ist Mist.

Manchmal werden auch Trigger ausgelöst die wiederum andere Prozeduren anstoßen....


Was ist mit der Frontend App? Läuft die auch auf dem DB Server oder nur die Datenbank? Ist denn also überhaupt die sqlserver.exe am CPU Limit oder meinetwegen Dotnet, etc. an sich?

Wenn Ihr App + DB nicht getrennt habt wäre die Frage: Welcher Prozeß istam LImit??

Bei letzteren wärst du beim SQL Server nicht ganz falsch. Da auch hier durch Inskonsitente DB und Tabellen die Anwendung so austillen könnte, dass sie alles mit sich reisst!


Zitat von westberliner:

Gesichert wird mit Veeam, SQL Log Trunking ist eingeschaltet.

Sicherung ist schon mal gut. Mit Veeam ist so ne Sache! Würde alternativ IMMER die DB direkt über den Server sichern. Geht im Online Betrieb und die DB bleibt intakt.

Google hilft dir dabei. Auch beim 2008er schluckt es UNC Pfade. Werden nur nich anzgeit. So kannst die einfach die BAK an anderen Ort ablegen. Nur Veeam wäre mir zu heikel!


Habt Ihr einen Wartungsvertrag? Ggf. frag doch die Progger bei Accantum direkt an, ob Sie via Remote mal drauf schauen können. Die kennen Ihren eigenen Code und sehen auch rasch wo es hängt!

Und ohne Vertrag dürften 30-60 min. Remote Support nicht all zu teuer sein.


Muss man immer Ausfallzeiten und Nutzen gegen rechnen. Oft hilft ein kleiner Anruf. ;)

mfg Crusher
Bitte warten ..
Mitglied: westberliner
13.01.2019 um 13:41 Uhr
Habe mir jetzt mal die Fragmentierung angeschaut - wenn ich es richtig deute - dann habe ich vermutlich ein Problem zumindest aufgedeckt. Kann das damit zusammen hängen, da die Datenbank platte aus dynamischen Volumes besteht? Ich habe diese nicht angelegt, sondern die VMs übernommen und ensprechend vergrössert. Evtl. macht es Sinn hier statische Datenträger daraus zu machen? Und macht es Sinn diesen Komprimierungstask aus dem Wartungsplan rauszunehmen?
https://administrator.de/images/c/1/5/2853dcb68226cfe8babfe47f77d1e4be.j ...
https://administrator.de/images/c/1/5/e9734240ef95c706cf6f1ecb2da1ee50.j ...
https://administrator.de/images/c/1/5/bc2b724c72ad4f5c3f12c0f4d655c004.j ...
https://administrator.de/images/c/1/5/6aa9da15d75169954eefe61789f9851e.j ...
fragm1 - Klicke auf das Bild, um es zu vergrößern
fragm2 - Klicke auf das Bild, um es zu vergrößern
fragm3 - Klicke auf das Bild, um es zu vergrößern
fragm4 - Klicke auf das Bild, um es zu vergrößern
vorgänge - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: SeaStorm
13.01.2019 um 13:59 Uhr
Nein, eine fragmentiert er Index hat nix mit einem fragmentiert en Datenträger zu tun.
Das bedeutet, das der Clustered Index schlecht gewählt ist und/oder die Wartung der Indexe nicht erfolgt.
Lass alle Indexe Mal neu erstellen, dann passt das wieder.
Beobachte dann, Welcher Index schnell wieder fragmentiert. Den muss man sich dann Mal ansehen und ggf korrigieren
Bitte warten ..
Mitglied: westberliner
13.01.2019, aktualisiert um 14:35 Uhr
Ich habe jetzt mal die hoch fragmentierten Indexe neu organisiert bzw. neu erstellen lassen.

3-4 Tabellen gehen kaum von der Fragmentierungsrate runter.
Die CPU-Last geht bei der SQLSERVER.exe dennoch hoch.
Das zeigt der Aktivitätenmonitor.
https://administrator.de/images/c/1/5/cb7ae32c08775c95cd9fe5fd88a9b82a.j ...

Besteht hier ein Problem mit der Tabelle DocumentPage?

Nachtrag:

Habe das Skript hier nochmal ausgeführt, das baut ALLE Indizies neu auf:

01.
DECLARE @Tabelle VARCHAR(255)
02.
DECLARE @sql NVARCHAR(500)
03.
DECLARE @faktor INT
04.

05.
SET @faktor = 80
06.

07.
DECLARE 
08.
	TabellenZeiger CURSOR FOR
09.
	SELECT 
10.
		OBJECT_SCHEMA_NAME([object_id])+'.'+name AS TableName
11.
	FROM 
12.
		sys.tables
13.

14.
OPEN TabellenZeiger
15.

16.
FETCH NEXT FROM TabellenZeiger INTO @Tabelle
17.

18.
WHILE @@FETCH_STATUS = 0
19.
BEGIN
20.
	SET @sql = 'ALTER INDEX ALL ON ' + @Tabelle + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@faktor) + ')'
21.
	EXEC (@sql)
22.
	FETCH NEXT FROM TabellenZeiger INTO @Tabelle
23.
END
24.
CLOSE TabellenZeiger
25.
DEALLOCATE TabellenZeiger
26.
GO
Nun scheint so, als würden die CPU-Last nicht mehr so hoch gehen bei suchen (nur ca. 15-20%, statt 95%)...
vorgänge - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: SeaStorm
13.01.2019 um 16:01 Uhr
Laut Screenshot entsteht die Belastung ja beim Updatebefehl. Da müsste man Mal gucken was da schief läuft. Vermutlich ein sch... Index.
Auf welchen Feldern liegt denn der Clustered Index der Tabelle tbTempDocumentList ?
Bitte warten ..
Ähnliche Inhalte
Netzwerke
LWL Wartung
gelöst Frage von sabinesNetzwerke6 Kommentare

Moin, hat hier schon mal einer eine LWL Wartung gemacht? Ich habe grade einen ehemaligen Kollegen gesprochen, der mir ...

Windows 10
Windows 10 Wartung
Erfahrungsbericht von 1Werner1Windows 1013 Kommentare

Moin, wenn man zum Autohändler geht und möchte man mehr Geld für ein Auto ausgeben, bekommt man ja mehr ...

Datenbanken
SQL 2008 R2 Sicherungsstrategie
gelöst Frage von Looser27Datenbanken9 Kommentare

Moin allerseits, ich versuche gerade unseren SQL zu verbessern. Auf diesem laufen u.a. Datenbanken für unser CRM-System und die ...

Windows Server
SQL Server 2008 R2
gelöst Frage von Marcel94Windows Server1 Kommentar

Hallo Zusammen, habe ein kleines Problem bezgl. einer SQL Server 2008 R2 Installation. Zu meiner Frage. Habe soweit alles ...

Neue Wissensbeiträge
Windows 10

Sandy-Bridge plus Nvidia plus Win10 1903 braucht Hotfix

Information von DerWoWusste vor 4 TagenWindows 101 Kommentar

Es gibt ein Problem in der seltenen Konstellation Nvidia-Grafikkarte/Sandy-Bridge-CPU/Win10v1903: die von Nvidia vorgeschlagenen Treiber lassen sich nicht installieren. verlinkt ...

Off Topic
Computermuseum Stuttgart
Tipp von NixVerstehen vor 5 TagenOff Topic5 Kommentare

Hallo zusammen, letzte Woche habe ich mit meinem 16-jährigen Sohn das Computermuseum Stuttgart (Uni Stuttgart) besucht, um ihm und ...

Windows 10
Windows 10: Netzwerk zeigt Fehler 0x80070035
Tipp von anteNope vor 5 TagenWindows 105 Kommentare

Moin zusammen, ich hatte gerade mal wieder das Vergnügen mit dem obigen Fehler. Unter Borns Blog ist das beschreiben: ...

Windows 10

Bug: Windows 10 Enterprise LTSC erhält Funktionsupdate angeboten

Information von kgborn vor 5 TagenWindows 106 Kommentare

Der Fehler ist mittlerweile zwar korrigiert, aber ich denke, ich stelle die Info doch mal hier für Leute ein, ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell Skript für Reg Datei ändern
gelöst Frage von SoccerdeluxBatch & Shell16 Kommentare

Hallo zusammen, ich muss auf einem Windows 10 Pc ein Skript ausführen lassen was sich alle 5 Minuten wiederholt. ...

Windows 10
WLAN-Verbindung wird getrennt, wenn per RDP auf das System zugegriffen wird
Frage von LordGurkeWindows 1015 Kommentare

Hallo, ich habe hier eine eigentlich sehr einfache Konstellation, die aber nun plötzlich Probleme verursacht: Es gibt ein Notebook ...

LAN, WAN, Wireless
WLAN in Veranstaltungshalle
Frage von coltseaversLAN, WAN, Wireless14 Kommentare

Hallo zusammen, für eine Halle mit 1300 m² suche ich derzeit nach einer WLAN-Hotspot-Lösung für bis zu 500 User ...

Windows 10
Windows 10 Logonskript greift nicht
Frage von xbast1xWindows 1011 Kommentare

Hallo zusammen, da sich die per GPO gemappten Laufwerke bei allen Usern schließen und das Problem sich nicht lösen ...