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 Chatzipavlis is a highly experienced Data Solutions Consultant and Trainer. He has been working in the IT industry since 1988, holding various roles such as senior developer, IT Manager, Data & AI Solutions Architect and Consultant.

Since 1995, Antonios has focused on modern technologies and software development tools, primarily by Microsoft. He has specialized in Data & AI since 2000, with expertise in Microsoft Data Platform (SQL Server, Azure SQL Databases, Azure Synapse Analytics, Microsoft Fabric, Power BI, AI) and Databricks.

Antonios is also a Microsoft Certified Trainer (MCT) for over 25 years, has been recognized as a Microsoft Most Valuable Professional (MVP) in Data Platform since 2010 and he is in the Data Expert 40 Powerlist 2024 by Boussias. He is the co-founder and visionary behind XLYTiCA, a company dedicated to Data & AI solutions.

Episode

Task Flows in Microsoft Fabric

image

More Episodes...

Tip

Get Certified: Become a Fabric Data Engineer

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-2025 All rights reserved

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