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 Server 2008 R2 50 Daten gelöscht, 15-fache Query-Laufzeit hinterher

Frage Microsoft Windows Server

Mitglied: 70866

70866 (Level 1)

09.01.2013 um 16:54 Uhr, 2403 Aufrufe, 4 Kommentare

hab eine Datenbank in der Mangel, die 6 GB an Daten enthalten hat. Nach dem Löschen von ca. 50% des Datenbestandes benötigt die Query 240 Sekunden und nicht mehr 15 Sekunden

Ich bin mit meinem Latein am Ende....

Ich hab eine Datenbank in der Mangel, die 6 GB an Daten enthalten hat. Nach dem Löschen von ca. 50% des Datenbestandes benötigt die Query 240 Sekunden und nicht mehr 15 Sekunden.

Anhand des geschätzten Ausführungsplanes sehe ich, daß in der verkleinerten Datenbank ein ganz anderer Plan benutzt wird, obwohl die Resultate-Menge der Query gleich bleibt.

Ich habe erst einzelne Indizes mit hohen IO Kosten neu erstellt, dann die Statistiken aktualisiert, und zuguterletzt in einem Wartungsplan ALLE Indizes neu erstellt und danach ALLE Statistiken.

Was kann dazu führen, daß bei gesunkenem Datenbestand die Abfragezeit sich so dramatisch verändern kann obwohl das Resultat an sich gleich bleibt?

Es sind lediglich Daten gelöscht worden, die schon vorher nicht benötigt wurden. Selbst ein "Verkleinern der Datenbank" mit "Neuberechnung des freien Speicherplatzes 10%" hat nichts gebracht.

Über Tips wäre ich sehr dankbar.
Mitglied: Hitman4021
09.01.2013 um 17:08 Uhr
Hallo,

vl hast du Versehentlich Keys gelöscht?

Gruß
Bitte warten ..
Mitglied: Grinskeks
09.01.2013 um 18:07 Uhr
Hallo,

geringe Performance und ineffiziente Queries können viele Ursachen haben:

- "Schlechte" Indizes
- fragmentierte Datenbankdateien (oft verkleinert?? = logische Fragmentierung innerhalb der Dateien) -> Backup, löschen, Recovery
- geringere Serverperformance (virtueller Server? neue Dienste?) -> Performance counter (buffer cache hit ratio etc.)
- Durch Blockieren beeinträchtigte Abfragen -> einfach mal unten das Script ausführen
- Fehlerhafte Views -> alle mal mit Select * from Viewname aufrufen


Es macht durchaus auch Sinn, den Aktivitätsmonitor aktiv zu haben und schauen, ob die User sich nicht gegenseitig Transaktionen blockieren, indem sie Ressourcen sperren.

Wurde an den Isolation Leveln gespielt? Wurde testweise schon mal das Wiederherstellungsmodell auf Einfach gestellt?

Viel Erfolg!






SELECT TOP 10
[Average Time Blocked] = (total_elapsed_time - total_worker_time) / qs.execution_count
,[Total Time Blocked] = total_elapsed_time - total_worker_time
,[Execution count] = qs.execution_count
,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)
,[Parent Query] = qt.text
,DatabaseName = DB_NAME(qt.dbid)
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Average Time Blocked] DESC;
Bitte warten ..
Mitglied: 70866
10.01.2013 um 12:37 Uhr
danke für den Tip ...

1) ich war alleine
2) physischer SErver 16 CPUs 16 GB RAM
3) Indizes können nicht schlecht sein weil komplett neu erstellt
4) Statistiken sind neu erstellt

die Abfrage war aber mit als auch ohne aktualisierte Statistiken gleich langsam, der Grad der Indexfragmentierung war im Prozentbereich vor dem Neuaufbau, und erst ab 50% gibts Performanceverlust.
Bitte warten ..
Mitglied: Grinskeks
10.01.2013 um 21:29 Uhr
Hallo,

dann probiere doch folgendes:

Vor die Query:

Set statistics time on;
set statistics io on;

Query ausführen und Ergebnisse anschauen: Viel mehr physical reads / logical reads?

Ausführungsplan posten, dann sehen wir auch, um welche Indizes es sich handelt.

In wie weit hat sich der Plan verändert? Wurden Index Seeks durch Scans ersetzt? Kann normal sein bei "wenigen" Datensätzen. Hat sich die Struktur verändert? Dann hat der SQL Server einen womöglich schlechten Ausführungsplan gespeichert. Was hilft, ist Indizes zu löschen, die im Moment verwendet werden.


Es gibt auch Systeme, die zu häufig gewartet werden:

DBCC Best Practices Implementations

There are few DBCC commands to be avoided and few very crucial for system. Understand the usage of DBCC FREEPROCCACHE, DBCC SRHINKDATABASE, DBCC SHRINKFILE, DBCC DROPCLEANBUFFER, DBCC REINDEX, as well as the usage of few system stored procedures like SP_UPDATESTATS. If you are currently using any of the above mentioned and a few other DBCC maintenance task commands carefully review their usage.


Zusätzlich mal schauen, ob nicht zufällig irgendeine Auditierung, Filestream, oder andere, externe Prozesse auf den Server zugreifen.

Aus der Ferne ist immer ein wenig Glaskugel bei dem komplexen Thema - mehr Infos wären nicht schlecht.
Gruss
Grinskeks
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Windows Server
SQL Server 2008 R2 SP3 neue Instanz (10)

Frage von technikdealer zum Thema Windows Server ...

Microsoft
gelöst DRINGEND: Suche Microsoft SQL SERVER 2008 R2 STANDARD Eval (8)

Frage von Xaero1982 zum Thema Microsoft ...

Datenbanken
gelöst 1GB phpMyAdmin SQL Datei in SQL Server 2008 R2 importieren (7)

Frage von Himpke zum Thema Datenbanken ...

Windows 10
gelöst SQL Server 2008 R2 kompatibel mit Windows 10? (14)

Frage von Sachellen zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...