Eine Performance Baseline ist nix anderes als eine Aufzeichnung von verschiedenen Countern/Parametern über einen definierten Zeitraum, z.B. eine Stunde. Die Baseline sollte in regelmäßigen Abständen erneut aufgezeichnet werden, damit diese mit der ursprünglichen Baseline verglichen werden kann.
Durch diesen Vergleich können Problemstellen leichter identifiziert werden bzw. Leistungsprobleme des [[SQL Server ]] mit Fakten belegt werden und erleichtert die Fehlersuche deutlich.
= Ablauf =
== Probleme ==
Eine Baseline Erfassung, abhängig welche Werte genau erfasst werden, erzeugt eine zusätzliche Last auf dem [[SQL Server]]. D.h. wenn der Server schon starke Leistungsprobleme hat, sollte von einer komplette Performance Baseline abgesehen werden und eher manuell die einzelnen problematischen Stellen eingekreist werden. Hier kann es hilfreich sein, wenn historische Baselines zur Verfügung stehen. Damit kann ggf. ein Trend erkannt werden, um bei der manuellen Suche nicht die sprichwörtliche "Nadel im Heuhaufen" zu suchen, sondern die Ursache schneller zu lokalisieren. = Performance Monitor = Folgende Parameter sind unter anderem für eine grundlegende Performance Baseline mittels Performance Monitor interessant.  == OS Performance Counters == === IPv4 ===* Fragment Re-assembly Failures* Fragmentation Failures* Fragmented Datagrams/sec* Fragments Created/sec* Fragments Re-assembled/sec* Fragments Received/sec === IPv6 ===* Fragment Re-assembly Failures* Fragmentation Failures* Fragmented Datagrams/sec* Fragments Created/sec* Fragments Re-assembled/sec* Fragments Received/sec === LogicalDisk(XZ:) === Hier sollte jede LogicalDisk überwacht werden, wo der die SQL Server Instanz Daten speichert. * Avg. Disk Bytes/Read* Avg. Disk Bytes/Transfer* Avg. Disk Bytes/Write* Avg. Disk sec/Read* Avg. Disk sec/Transfer* Avg. Disk sec/Write* Disk Bytes/sec* Disk Read Bytes/sec* Disk Reads/sec* Disk Transfers/sec* Disk Write Bytes/sec* Disk Writes/sec* Free Megabytes === Memory ===* Available MBytes* Cache Faults/sec* Page Faults/sec* Page Reads/sec* Page Writes/sec* Pages Input/sec* Pages Output/sec* Pages/sec === Network Interface === Bitte nur die spezifischen Adapter, über welche mit dem SQL kommuniziert wird. * Bytes Received/sec* Bytes Sent/sec* Bytes Total/sec* Packets Outbound Discarded* Packets Outbound Errors* Packets Received Discarded* Packets Received Errors* Packets Received Non-Unicast/sec* Packets Received Unicast/sec* Packets Received Unknown* Packets Received/sec* Packets Sent Non-Unicast/sec* Packets Sent Unicast/sec* Packets Sent/sec* Packets/sec === Process(sqlservr) === Der Prozess der zu untersuchenden [[SQL Server]] Instanz. * % Privileged Time* % Processor Time === Processor (_Total|0..n) === Die Werte für jede Core einzeln und als Totale erfassen * % Interrupt Time* % Privileged Time* % Processor Time === Processor Information(_Total|0..n) === Die Werte für jede Core einzeln und als Totale erfassen * % of Maximum Frequency* Processor Frequency === TCPv4 === * Connection Failures* Connections Active* Connections Established* Connections Passive* Connections Reset* Segments Received/sec* Segments Retransmitted/sec* Segments Sent/sec* Segments/sec === TCPv6 === * Connection Failures* Connections Active* Connections Established* Connections Passive* Connections Reset* Segments Received/sec* Segments Retransmitted/sec* Segments Sent/sec* Segments/sec == SQL Performance Counters == Hier fehlen noch Counter, falls AlwaysOn oder Replikation aktiv ist. === SQLAgent:Jobs(*) === * Active jobs === SQLServer:Access Methods === * Full Scans/sec* Index Searches/sec* Range Scans/sec* Table Lock Escalations/sec* Workfiles Created/sec* Worktables Created/sec* Worktables From Cache Ratio === SQLServer:Batch Resp Statistics === Für "CPU Time:Requests", "CPU Time:Total(ms)", "Elapsed Time:Requests" und Elapsed Time:Total(ms) alle Zeitbereich der Batches auswählen. Beispiel : Batches >=000001ms&<000002ms === SQLServer:Buffer Manager ===  * Buffer cache hit ratio* Page life expectancy* Page lookups/sec* Page reads/sec* Page writes/sec === SQLServer:Buffer Node(000) === Falls NUMA aktiv ist, sollten alle Nodes erfasst werden. * Database pages* Local node page lookups/sec* Page life expectancy* Remote node page lookups/sec === SQLServer:Databases(_Total) === * Log Flush Write Time (ms)* Transactions/sec === SQLServer:Exec Statistics(*) === * Distributed Query* DTC calls* OLEDB calls === SQLServer:General Statistics === * Logins/sec* Logouts/sec* User Connections === SQLServer:Latches === * Average Latch Wait Time (ms)* Latch Waits/sec === SQLServer:Locks(_Total) === * Lock Requests/sec* Lock Wait Time (ms)* Number of Deadlocks/sec === SQLServer:Memory Manager === * Stolen Server Memory (KB)* Target Server Memory (KB)* Total Server Memory (KB) === SQLServer:Memory Node(000) === Für jede Numa Node * Stolen Server Memory (KB)* Target Server Memory (KB)* Total Server Memory (KB) === SQLServer:Plan Cache(_Total) === * Cache Hit Ratio === SQLServer:SQL Errors(_Total) === * Errors/sec === SQLServer:SQL Statistics === * Batch Requests/sec* SQL Compilations/sec* SQL Re-Compilations/sec === SQLServer:Transactions === * Free Space in tempdb (KB)* Transactions* Version Store Size (KB) === SQLServer:Wait Statistics(X) === Für "Average wait time (ms)" und "Waits in progress" * Lock waits* Log buffer waits* Log write waits* Memory grant queue waits* Network IO waits* Non-Page latch waits* Page IO latch waits* Page latch waits* Thread-safe memory objects waits* Transaction ownership waits* Wait for the worker* Workspace synchronization waits
Änderungen – Software Entwicklung Projekte

Änderungen

MS-SQL Baseline

4.719 Byte hinzugefügt, 08:29, 22. Jun. 2015
/* SQL Performance Counters */
175
Bearbeitungen