SQL Server-DMV-Dynamic Management Views-مانیتورینگ دیتابیس-بهینه‌سازی Query-عیب‌یابی SQL-ایندکس در SQL Server-Deadlock-Performance Tuning SQL

DMV ها (Dynamic Management Views) در SQL Server مجموعه‌ای از ویوهای سیستمی هستند که اطلاعات لحظه‌ای و دقیقی از وضعیت سرور، دیتابیس، Queryها و منابع سخت‌افزاری ارائه می‌کنند. استفاده هوشمندانه از DMVها به شما کمک می‌کند تا:

  • عملکرد Query‌ را بهینه کنید.
  • گلوگاه‌های سیستمی (CPU, IO, Memory) را شناسایی کنید.
  • مشکلات لاک و تراکنش را عیب‌یابی کنید.

معرفی DMV ها و مزایای آنها

Dynamic Management Views، از نسخه‌ SQL Server 2005 به بعد معرفی شدند و در هر نسخه، تعداد و قابلیت‌های جدیدی به آنها اضافه شده است. ویژگی‌های اصلی DMVها:

  • نمایش آمار زنده از اجرای Queryها، منابع و وضعیت دیتابیس
  • گزارش‌های Read-Only، بدون تغییر در داده‌ها
  • نیاز به مجوزهای VIEW SERVER STATE یا VIEW DATABASE STATE

دسته‌بندی‌ اصلی DMVها

دسته‌بندیکاربرد کلینمونه DMV
sys.dm_exec_*آنالیز Queryها و Execution Plansys.dm_exec_query_stats
sys.dm_exec_query_plan
sys.dm_os_*مانیتور منابع OS و سرورsys.dm_os_wait_stats
sys.dm_os_memory_clerks
sys.dm_db_*وضعیت دیتابیس، ایندکس و فایل‌هاsys.dm_db_index_usage_stats
sys.dm_db_missing_index_details
sys.dm_tran_*اطلاعات تراکنش و لاک‌هاsys.dm_tran_locks
sys.dm_tran_active_transactions
sys.dm_io_*آمار ورودی/خروجی دیسکsys.dm_io_virtual_file_stats
sys.dm_clr_*گزارش‌های CLR و اسمبلی‌های بارگذاری‌شدهsys.dm_clr_appdomains
sys.dm_clr_loaded_assemblies

کاربرد DMV ها در عیب‌یابی مشکلات

  1. تشخیص Queryهای کند و سنگین
    • با sys.dm_exec_query_stats و sys.dm_exec_requests، Queryهایی با بالاترین زمان اجرا را بیابید.
    • Execution Plan را از sys.dm_exec_query_plan استخراج کنید تا Bottleneckها را تشخیص دهید.
  2. بررسی لاک‌ها و Deadlock
    • sys.dm_tran_locks برای شناسایی Lockهای فعال
    • ترکیب با sys.dm_exec_requests برای نمایش Sessionهای بلاک‌شده
  3. تحلیل Wait Stats و گلوگاه منابع
    • sys.dm_os_wait_stats نوع و مدت زمان انتظار (مثل PAGEIOLATCH, CXPACKET) را نشان می‌دهد.
    • sys.dm_os_memory_clerks مصرف حافظه توسط اجزای مختلف SQL را گزارش می‌کند.
  4. مانیتورینگ IO دیسک
    • sys.dm_io_virtual_file_stats میزان خواندن/نوشتن و Latency فایل‌ها را می‌دهد.
    • sys.dm_io_pending_io_requests تعداد درخواست‌های معلق دیسک را نمایش می‌دهد.
  5. تحلیل استفاده از ایندکس‌ها
    • sys.dm_db_index_usage_stats میزان استفاده از هر ایندکس را نشان می‌دهد.
    • sys.dm_db_missing_index_details پیشنهاد ایندکس‌های جدید را ارائه می‌کند.

DMV ها و بهینه‌سازی Query

– شناسایی Queryهای پر هزینه با این اسکریپت:

SELECT TOP 5
  qs.total_elapsed_time/qs.execution_count AS avg_time_ms,
  qs.execution_count,
  st.text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY avg_time_ms DESC;

– بررسی Execution Plan برای هر Query:

SELECT 
  qp.query_plan,
  st.text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 10;

نکات مهم

  • از SELECT* پرهیز کنید و فقط ستون‌های ضروری را انتخاب کنید.
  • Statistics را با دستور UPDATE STATISTICS دوره‌ای به‌روز نگه دارید.
  • در صورت Parameter Sniffing، از OPTION (RECOMPILE) یا OPTIMIZE FOR UNKNOWN استفاده کنید.

DMV ها در نسخه‌های مختلف SQL Server

نسخهDMVهای کلیدی جدید
۲۰۰۵معرفی پایه‌ای sys.dm_exec_, sys.dm_os_, sys.dm_db_*
۲۰۰۸ R2 SP1sys.dm_server_services, sys.dm_os_windows_info, …
۲۰۱۲sys.dm_hadr_*, sys.dm_db_uncontained_entities, …
۲۰۱۴sys.dm_db_xtp_table_memory_stats, sys.dm_db_column_store_*
۲۰۱۶sys.dm_exec_query_store_, sys.dm_os_buffer_pool_extension_
۲۰۱۹/۲۰۲۲DMVهای Intelligent Query Processing، Big Data Clusters، Ledger Tables

نکات کلیدی برای استفاده اثربخش از DMV ها

  • مطمئن شوید مجوزهای لازم را دارید (VIEW SERVER STATE / VIEW DATABASE STATE).
  • خروجی DMVها پس از ری‌استارت یا پاک شدن Cache از بین می‌رود؛ در صورت لزوم گزارش دوره‌ای بگیرید.
  • داده‌ها را در جداول تاریخچه ذخیره کنید تا روند بلندمدت را تحلیل کنید.
  • از ابزارهایی مانند Power BI ،Grafana یا SSRS برای داشبورد بلادرنگ بهره ببرید.

سوالات متداول (FAQ)

۱. DMV چیست و چرا اهمیت دارد؟

Dynamic Management Views، ویوهای سیستمی‌ هستند که اطلاعات زنده‌ای از اجرا، منابع و وضعیت SQL Server ارائه می‌دهند و پایه‌ی هر کار مانیتورینگ و عیب‌یابی حرفه‌ای هستند.

۲. چه مجوزهایی برای دسترسی به DMV نیاز است؟

برای DMVهای سروری به VIEW SERVER STATE و برای DMVهای دیتابیس به VIEW DATABASE STATE نیاز دارید.

۳. آیا خواندن DMVها روی Performance تأثیر دارد؟

Queryهای معمولی DMVها Read-Only بوده و تاثیر ناچیزی دارند، اما اسکریپت‌های سنگین تحلیل می‌توانند منابع قابل توجهی مصرف کنند.

۴. چطور می‌توانم داده‌های DMV را آرشیو کنم؟

با ایجاد Jobهای زمان‌بندی‌شده در SQL Server Agent و ذخیره خروجی DMVها در جداول گزارش، می‌توانید تاریخچه عملکرد را نگهداری کنید.

۵. چگونه DMVها را با ابزارهای مانیتورینگ ترکیب کنم؟

از اتصال مستقیم SQL به Power BI یا Grafana و کشیدن Queryهای DMV به داشبورد، گزارش‌های بلادرنگ بسازید.

تماس و مشاوره

می‌خواهید Performance دیتابیس خود را ۳ برابر بهبود دهید؟ برای مشاوره رایگان در زمینه DMV، مانیتورینگ و Performance Tuning کلیک کنید.

همین حالا با ما تماس  بگیرید و مشاوره رایگان دریافت کنید.

نظری داده نشده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *