آشنایی با DMV ها و توابع سیستمی
آموزش پیشرفته SQL Server (جلسه سوم) - آشنایی با DMV ها و توابع سیستمی
آشنایی با DMV ها و توابع سیستمی، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی آشنایی با DMV ها و توابع سیستمی، قسمت های قبلی را مطالعه فرمایید.
DMV چیست؟
هدف: امکان انجام عملیات های سیستمی را فراهم می نماید.
آشنایی با توابع آماری سیستمی
در ادامه لیستی از این توابع به همراه کاربرد هر یک آمده است:
- CONNECTIONS@@: تعداد اتصال یا تلاش برای اتصال به SQL SERVER
- PACK_RECEIVED@@: تعداد کل بسته رسیده از شبکه مربوط به اتصال SQL SERVER
- PACK_SENT@@: تعداد کل بسته ارسالی شبکه مربوط به اتصال SQL SERVER
- PACKET_ERRORS@@: تعداد کل خطاهای بسته شبکه مربوط به اتصال SQL SERVER
- TOTAL_READ@@: تعداد کل خواندنها از روی دیسک در آخرین راه اندازی SQL SERVER
- TOTAL_WRITE@@: تعداد کل نوشتن های روی دیسک در آخرین راه اندازی SQL SERVER
- TOTAL_ERRORS@@: تعداد خطای خواندن/نوشتن روی دیسک در آخرین راه اندازی SQL SERVER
- @@cpu_busy: مقدار زمان مصرفی CPU برای پردازشهای SQL SERVER برحسب میلی ثانیه
- @@io_busy: مقدار زمان پردازشهای IO برحسب میلی ثانیه
- @@timeticks: تعداد میکروثانیه ها در هر تیک ساعت CPU
توجه: با کمک دستور SP_MONITOR میتوان با تمامی اطلاعات بالا دست یافت
آشنایی با DMV های سیستمی:
-
sys.dm_exec_connections: اطلاعاتی راجه به اتصالهای ایجاد شده به یک instance از SQL SERVER را ارائه می نماید.
-
sys.dm_exec_sessions: به ازاء هر Session ایجاد شده اطلاعاتی از قبیل client version, client program name, client login time, login user, current session setting,را در یک ردیف ارائه می کند.
-
sys.dm_exec_text_query_plan: اطلاعاتی را برای پلان اجرایی یک پرس و جو - Query در قالب متن ارائه می مند که این قالب متنی بدون محدودیت در اندازه می باشد.
-
sys.dm_exec_sql_text: متن پرس وجو را با حذف توابع موجود در آن بر می گرداند.
-
sys.dm_exec_requests: اطلاعاتی را در مورد هر درخواست اجرا شده در SQL SERVER بیان می کند.
-
sys.dm_exec_query_stats: اطلاعاتی در مورد پلان اجرایی - Execution Plan با کمک Statistic های موجود در قالب یک ردیف برای هر پرس و جو نشان می دهد.
برای مثال مجموعه دستور زیر با کمک DMV های بالا 5 پرس و جوی بالای اجرا شده از نظر میانگین زمان پردازنده - average CPU time را نشان می دهد
آشنایی با DMV ها و توابع سیستمی
USE AdventureWorks2008R2; GO SELECT TOP 5 query_stats.query_hash AS "Query Hash", SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time", MIN(query_stats.statement_text) AS "Statement Text" FROM (SELECT QS.*, SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(ST.text) ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats GROUP BY query_stats.query_hash ORDER BY 2 DESC; GO
توجه: برای دانلود پایگاه داده نمونه برای SQL SERVER می توانید به آدرس http://msftdbprodsamples.codeplex.com مراجعه نمایید.
به عنوان مثال دوم مجموعه دستورات زیر تمامی اتصالات ایجاد شده به یک نمونه - Instance از SQL SERVER از طریق یک آدرس IP منحصربفرد را نشان می دهد:
آشنایی با DMV ها و توابع سیستمی
SELECT dec.client_net_address ,
des.program_name ,
des.host_name ,
--des.login_name ,
COUNT(dec.session_id) AS connection_count
FROM sys.dm_exec_sessions AS des
INNER JOIN sys.dm_exec_connections AS dec
ON des.session_id = dec.session_id
-- WHERE LEFT(des.host_name, 2) = 'WK'
GROUP BY dec.client_net_address ,
des.program_name ,
des.host_name
-- des.login_name
-- HAVING COUNT(dec.session_id) > 1
ORDER BY des.program_name,
dec.client_net_address ;
خروجی این مجموعه دستور به صورت زیر خواهد بود:
در ادامه بحث آشنایی با DMV ها و توابع سیستمی خواهید دید ...!
1-آشنایی کامل با DMV ها و توابع سیستمی
2- آموزش جامع نحوه اجرا و استفاده از DMV ها و توابع سیستمی همراه با مثال کاربردی
دسترسی به موارد آموزشی بالا در بسته خریداری شده
- شماره جلسه: 3
- نام فایل ویدئو: 02
- فرمت فایل: mp4.
نقطه شروع بحث بالا (آشنایی با DMV ها و توابع سیستمی) در ویدئو: 26:00
برای خرید و دانلود کامل آموزش پیشرفته SQL Server کلیک کنید.
- نوشته شده توسط محمدی
- بازدید: 10024