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, 295 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
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 17 StundenInternet2 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 21 StundenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell21 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...

Debian
OpenSSH Login mit Public Key schlägt fehl, mit Passwort funktioniert
gelöst Frage von DKowalkeDebian19 Kommentare

Hallo zusammen, ich hatte hier schon nach einer Anleitung für einen SFTP Server mit Linux gefragt, habe dort auch ...