Πριν ξεκινήσω να περιγράφω το συγκεκριμένο εργαλείο, οφείλω να καταθέσω την άποψη μου γι’ αυτό. ΕΙΝΑΙ ΚΑΤΑΠΛΗΚΤΙΚΟ!!!.
Όσοι έχετε ασχοληθεί από παλία με τον SQL Server, προσωπικά ασχολούμαι από την έκδοση 6.0 (1996), θα έχετε παρακολουθήσει την εξέλιξη του συγκεκριμένου εργαλείου. Σε κάθε έκδοση είχαμε κάποιες βελτιώσεις. Όμως στην έκδοση του SQL Server 2008 πιστεύω ότι έχουμε τις περισσότερες αλλά και τις σημαντικότερες βελτιώσεις. Eίναι μια διαφορετική υλοποίηση του εργαλείου που δίνει μια πληρέστερη εικόνα τόσο στον Database Admin όσο και στον Database Developer.
Ας ξεκινήσω λοιπόν την περιήγηση στο εργαλείο αυτό.
Πρώτη αλλαγή είναι το πως τον ξεκινάς. Δεν είναι πλεόν στο Management του SSMS (SQL Server Management Studio). Αλλά πρέπει να κάνεις δεξί κλικ στον server στον Object Explorer και να επιλέξεις την επιλογή Activity Monitor από το menu επιλογών.
Μετά από αυτο θα δούμε το νέο Activity Monitor
Όπως θα δείτε υπάρχουν τέσσερα γραφήματα τα οποία δείχνουν
% Processor Time
Το ποσοστό του χρόνου που έχει διανυθεί και τον οποίο ο επεξεργαστής έχει δαπανήσει για να εκτελέσει non-idle threads για τον SQL Server σε όλες τις CPUs.
Waiting Tasks
Ο αριθμός των tasks τα οποία περιμένουν πόρους είτε του επεξεργαστή, είτε για Ι/Ο, είτε για μνήμη.
Database I/Ο
Το transfer rate σε MB/Sec για την μεταφορά των δεδομένων είτε από την μνήμη στον δίσκο, είτε από το δίσκο στη μνήμη, είτε από δίσκο σε δίσκο.
Batch Requests/sec
Ο αριθμός των batches που έχουν σταλθεί στον SQL Server.
Ακριβώς κάτω από τα γραφήματα υπάρχουν τέσσερεις λίστες
Processes
Εδώ βλέπουμε κάθε connection που έχει γίνει στον SQL Server και τι ακριβώς κάνει. Η λίστα περιέχει τις εξής πληροφορίες
Session ID
Ο μοναδικός αριθμός που παίρνει κάθε connection το γνωστό SPID. Αν δείτε δίπλα του μια κλεψύδρα εύκολα θα καταλάβετε ότι κάτι περιμένει ή είναι μπλοκαρισμένο από κάποιο άλλο connection.
User Process Flag
Δείχνει τα αν το συγκεκριμένο process είναι internal (τιμή 0) ή user (τιμή 1). By default δείχνει μόνο τα user αλλά μπορείτε να το αλλαξετε πατώντας το drop down που υπάρχει στο header της κολώνας. Υπάρχει και η τιμή All που τα δείχνει όλα.
Login
Το login name με το οποίο το συγκεκριμένο process έχει γίνει.
Database
Η τρέχουσα database στην οποία το connection είναι συνδεδεμένο.
Task State
Δείχνει εάν το process είναι ενεργό ή όχι. Εδώ μπορώ να έχω τις εξής τιμές
Done: | Ολοκλήρωση |
Pending: | Το process περιμένει ένα worker thread |
Runnable: | Κάτι έχει κάνει λίγο πριν αλλά αυτή την στιγμή δεν κάνει τίποτα αλλά είναι ακόμα συνδεδεμένο. |
Running: | Κάτι κάνει αυτή την στιγμή |
Suspended: | Το process αν και έχει δουλειά να κάνει, έχει σταματήσει γιατί κάτι το εμποδίζει να συνεχίσει. Δες το γιατί από την κολώνα Wait Type. |
Σχόλιο: Διευκρίνηση για το αφεντικό, αυτό δεν δείχνει αν χρήστης το φυσικό πρόσωπο δηλαδή κοιμάτε ή όχι πάνω στο πληκτρολόγιο του. Το λέω γιατί κάποιος πελάτης, μου είπε κάτι τέτοιο στο παρελθόν!!!.
Command
Δείχνει το command type (πχ SELECT, DBCC, INSERT, AWAITING COMMAND,…) το οποίο εκτελείτε. Προσοχή δεν δείχνει το πραγματικό command. Εαν θέλετε να δείτε το πραγματικό κάντε δεξί κλικ και επιλέξτε Details.
Application
Δείχνει την εφαρμογή με την οποία έχει γίνει το connection. Αυτό μπορεί να ορισθεί από τον developer πάνω στο connection string με το keyword Application Name.
Wait Time (ms)
Εαν το process είναι bloked δείχνει τον χρόνο που είναι σε αναμονή σε milliseconds αλλιώς δείχνει 0.
Wait Type
Δείχνει το event το οποίο περιμένει το process για να συνεχίσει.
Wait Resource
Δείχνει το resource το οποίο περιμένει το process να ελευθερώθεί για να συνεχίσει.
Blocked By
Δείχνει το SPID (Session ID) το οποίο έχει μπλοκάρει το process αυτό.
Head Blocker
Εαν η τιμή είναι 1 αυτό σημαίνει ότι το Session ID που φαίνεται στην Blocked By κολώνα είναι ο επικεφαλής στην αλυσίδα των μπλοκαρισμάτων.
Memory Use (KB)
Δείχνει το ποσό της μνήμης η οποία χρησιμοποιείται από το process αυτό.
Host
Δείχνει το computer name από όπου έχει γίνει το connection αυτό.
Workload Group
Δείχνει το όνομα του Resource Governor workload group για το query αυτό.
Resource Waits
Η λίστα αυτή δείχνει πληροφορίες για την αναμονή στα resources και περιλαμβάνει τις εξής πληροφορίες:
Wait Category
Είναι οι κατηγορίες που συγκεντρώνονται για τα wait type statistics. Κάτι αντίστοιχο μπορώ να πάρω με την dmv sys.dm_os_wait_stats.
-
Wait Time (ms/sec)
-
Ο χρόνος wait time σε ms/sec για όλα τα task τα οποία περιμένουν κάποιο ή κάποια resources στην συγκεκριμένη κατηγορία από το τελευταίο update interval.
-
Recent Wait Time (ms/sec)
-
O σταθμικός μέσος του wait time ms/sec για όλα τα task τα οποία περιμένουν ένα ή περισσότερα resources στην κατηγορία από το τελευταίο update interval.
-
Average Waiter Count
-
Ο αριθμός των tasks που περιμένουν για κάποιο ή κάποια resources στην συγκεριμένη κατηγορία σε μια δεδομένη στιγμή.
-
Cumulative Wait Time (sec)
-
Ο συνολικός χρόνος που τα tasks πρέπει να περιμένουν για ένα ή περισσότερα resources στην κατηγορία από τοτε που ξεκίνησε ο SQL Server ή από τότε που εκτελέσθηκε τελευταία φορά ή DBCC SQLPERF.
-
Data File I/O
Η λίστα αυτή δείχνει πληροφορίες για τα database files των databases που υπάρχουν στον SQL Server, και περιέχει τις εξής πληροφορίες:
Database
Το όνομα της βάσης.
File Name
Το όνομα (φυσικό) του αρχειου της βάσης.
MB/sec Read
Το τελευταίο read activity, σε megabytes ανά second, για το database file.
MB/sec Written
Το τελευταίο write activity, σε megabytes ανά second, για το database file.
Response Time (ms)
Ο Μ.Ο του response time, σε milliseconds, για το τελευταίο read-and-write activity στο database file.
Recent Expensive Queries
Η λίστα αυτή δείχνει πληροφορίες για τα πιό ακριβά σε resources queries τα οποία έχουν τρέξει στον SQL Server τα τελευταία 30 sec.
H πληροφορία βγαίνει από την ένωση των dmv sys.dm_exec_requests και sys.dm_exec_query_stats και περιλαμβάνει queries τα οποία είναι σε εξέλιξη αλλά και αυτά τα όποία έχουν τελειώσει μέσα στην χρονική περίοδο των 30 sec, και περιλαμβάνει τις εξης πληροφορίες:
Query
Το query statement το οποίο γίνεται monitor.
Executions/min
Τα executions ανα λεπτό για το query.
CPU (ms/sec)
Η χρήση της CPU από το query
Physical Reads/sec
Η χρήση ανα second των physical reads από το query.
Logical Writes/sec
Η χρήση ανά second των logical writes από το query.
Logical Reads/sec
Η χρήση ανά second των logical reads από το query.
Average Duration (ms)
Η μέση διάρκεια εκτέλεσης του query σε milliseconds.
Plan Count
O αριθμός των cached query plans για αυτό το query. Ένας μεγάλος αριθμός δείχνει ότι χρειάζεται να στρέψουμε την προσοχή μας στο query αυτό.