sqlschool.gr logo

articles

Articles of SQLschool.gr Team

Manage and Monitor SQL Server instances - Monitor Current Sessions

Antonios Chatzipavlis
Sunday 25 March 2018

Καθημερινά δέχομαι ερωτήματα που αφορούν θέματα απόδοσης και αυτό που έχω διαπιστώσει είναι ότι υπάρχει μια σημαντική έλλειψη γνώσης και εμπειρίας στο συγκεκριμένο θέμα.

Οι περισσότεροι ψάχνουν απεγνωσμένα στον ιστό και σε αυτόν βρίσκουν μεμονωμένες πληροφορίες που σπάνια μπορεί να τους βοηθήσουν για να εντοπίσουν αρχικά και κατόπιν να λύσουν το πρόβλημα.

Αυτό που λέω πάντα είναι ότι για να λύσεις ένα πρόβλημα πρέπει να το έχεις βρει και να το έχεις καταλάβει. Για αυτό το λόγο θα ξεκινήσω μια σειρά από άρθρα (και αυτό είναι το πρώτο) με το οποίο θα σας παρουσιάσω τα εργαλεία που έχουμε στο SQL Server ώστε να μπορούμε να εντοπίσουμε τα προβλήματα αρχίζοντας με τα sessions που έχουμε στο instance μας και τα οποία φυσικά είναι αυτά που δίνουν και τις εργασίες σε αυτό. Είναι το πρώτο και βασικό στοιχείο που πρέπει να γνωρίζουμε για την επίλυση του εκάστοτε προβλήματος.

Ο SQL Server παρέχει πλήθος από DMVs που μας επιτρέπουν σε πραγματικό χρόνο να μπορούμε να δούμε την δραστηριότητα των χρηστών που είναι συνδεδεμένοι στο instance μας και να μπορούμε να καταλάβουμε τι εκτελούν, τι πόρους καταναλώνουν, τι προβλήματα αντιμετωπίζουν και ποιο είναι αυτό που τους κάνεις να μην έχουν την επιθυμητή απόδοση.

Αυτά τα DMV είναι τα παρακάτω και καλό είναι να δείτε αυτά στο documentation.

sys.dm_exec_connections

Από τα βασικά DMV καθώς παρέχει σημαντικές πληροφορίες σχετικά με το session και το πως αυτό έχει γίνει και από που στο instance. Όλα τα στοιχεία που αυτό παρέχει είναι σημαντικά αλλά μπορώ να ξεχωρίσω τα net_transport, protocol_type, endpoint_id, auth_scheme, client_net_address, client_tcp_port και το most_recent_sql_handle.

sys.dm_exec_sessions

Παρέχει πληροφορίες που όλα τα sessions (user & internals) τα οποίο μπορούμε να το ξεχωρίσουμε με το is_user_process field. Με το DMV αυτό μπορούμε να δούμε όλα τα session options που αυτό έχει ενεργά και έτσι μπορούμε να καταλάβουμε στοιχεία σημαντικά όπως το transaction_isolation_level, τα ansi options που έχει το status τα login_name, nt_user_name. Ακόμα ενδιαφέρον έχουν τα login_time, host_name, host_process_id και φυσικά οι καταναλώσεις που αυτό έχει κάνει στους διάφορους πόρους.

sys.dm_exec_requests

Παρέχει πληροφορίες για το τι εκτελείται την στιγμή αυτή πάνω στο instance. Είναι από το κεντρικά DMVs που χρησιμοποιούνται. Ενδιαφέρον έχουν τα πεδία block_session_id, command, dop, last_wait_type, percent_complete, status, transaction_isolation_level, wait_time, wait_type.

sys.dm_tran_session_transactions

Παρέχει πληροφορίες για τα transactions που το κάθε session εκτελεί την στιγμή αυτή.

sys.dm_exec_session_wait_stats

Υπάρχει από τον SQL Server 2016 και παρέχει σημαντικότατες πληροφορίες για το που κάθε session thread καθυστερεί.

sys.dm_os_waiting_tasks

Παρέχει πληροφορίες για τo wait queue των tasks και είναι δίνουμε ιδιαίτερη σημασία στα πεδία blocking_session_id, resource_id, wait_type, wait_duration_ms.

Combine All

Αν και το κάθε ένα μεμονωμένα δίνει αρκετές πληροφορίες αυτό που συνηθίζουμε να κάνουμε είναι να συνδυάζουμε τις πληροφορίες από αυτά και αυτό μπορεί να γίνει με ένα join καθώς όλα περιέχουν το session_id field που μπορεί να τα ενώσει.

Μπορώ και γράφω αρκετά queries με αυτά ενδεικτικά με το παρακάτω μπορώ να δω όλα τα sessions που έχουν γίνει στο instance και την κατανάλωση πόρων που έχουν κάνει.

select  c.session_id, c.net_transport, c.encrypt_option,  c.auth_scheme, 
      s.host_name, s.program_name,  s.client_interface_name, s.login_name, s.nt_domain,
      s.nt_user_name, c.connect_time, s.login_time,   s.reads, s.writes, s.logical_reads, s.status,
      s.cpu_time, s.total_scheduled_time, s.total_elapsed_time
from sys.dm_exec_connections as c
inner join  sys.dm_exec_sessions as s on c.session_id = s.session_id;

//antonch


Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Tip

What's New in SQL Server 2022 - Episodes

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2024 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.