آموزش Extended Events در SQL Server
Extended Events در SQL Server
اگر سال هاست که از SQL Server Profiler استفاده می کنید ، وقت آن رسیده که با قدرتمندترین ابزار مانیتورینگ SQL Server آشنا شوید . Extended Events از SQL Server 2008 معرفی شد و امروزه در SQL Server به ابزار اصلی برای مانیتورینگ ، عیب یابی و تحلیل Performance تبدیل شده است .
برخلاف SQL Profiler این ابزار :
- مصرف CPU بسیار کمتری دارد .
- روی سرورهای Production قابل استفاده است .
- هزاران Event مختلف را پشتیبانی می کند .
- امکان فیلترهای بسیار پیشرفته دارد .
- اطلاعات بسیار بیشتری نسبت به Profiler ثبت می کند .
به همین دلیل مایکروسافت استفاده از SQL Profiler را برای محیط عملیاتی توصیه نمی کند .
Extended Events از چهار بخش اصلی تشکیل شده است :
Event ) رخدادی که میخواهیم ثبت کنیم مانند :
- Query اجرا شده .
- Login انجام شده .
- Deadlock های اتفاق افتاده .
- Backup های اجرا شده .
Action ) اطلاعات اضافه ای که همراه Event ذخیره می شود مانند :
- Database Name
- Username
- Session ID
- SQL Test
- Client Host
- Application Name
Predicate ) فیلتر Event
- مثلا فقط Query هایی که بیشتر از 5 ثانیه اجرا شده اند .
Target ) محل ذخیره اطلاعات مثلا :
- Event File (.xel )
- Ring Buffer
- Event Counter
چرا Extended Events بهتر از SQL Profiler است :
| Extended Events | SQL Profiler |
| مصرف CPU بسیار کم | مصرف CPU زیاد |
| مناسب Production | مناسب محیط تست |
| بیش از 1700 Event | Event های محدود |
| سرعت بسیار بالا | سرعت پایین |
| بسیار انعظاف پذیر | قابلیت توسعه محدود |
در ادامه ، نحوه استفاده از Extended Events در SQL Server و چگونگی عملکرد آن را در قالب یک مثال بررسی کرده و بخش های مختلف و امکانات این قابلیت را تشریح خواهیم کرد .
مثال ) شناسایی Query های کند در SQL Server :
در داخل SSMS دو روش جداگانه برای ایجاد Session های سفارشی در Extended Events وجود دارد New Session Wizard و New Session . در این مقاله ما بر روی New Session متمرکز می شویم . برای دسترسی به پنجره New Session از طریق Object Explorer حرکت کنید و گزینه Management را باز کنید سپس Extended Events را گسترش دهید و در نهایت Sessions را انتخاب کنید .

با راست کلیک بر روی Sessions و انتخاب New Session... پنجره ای مشابه شکل زیر را مشاهده خواهید نمود .

تنها چیزی که در اینجا باید پر کنید Session Name است . بقیه تنظیمات اختیاری هستند ، نام Session می تواند حداکثر 128 کاراکتر باشد . سعی کنید برای Session نام های انتخاب کنید که نسبتا توصیفی از عملکر آن Session را شامل شود . بعد از نام گذاری برای Session باید حداقل یک Event را برای این Session تعریف کنید یا از قالب استفاده کنید . برای استفاده از قالب می توانید از منوی کشویی Template اقدام نمائید . حال جهت سفارشی سازی برای مانیتور کردن کوئری های کند از سمت چپ صفحه از قسمت Select a Page بر روی Events کلیک کنید .

هر Session باید حداقل دارای یک Event باشد، هنگامی که برای اولین بار صفحه Events را باز می کنید پنجره ای مشابه پنجره بالا را خواهید دید . شما می توانید لیست تمام Event ها را در وسط صفحه مشاده کنید ، در بالای صفحه یک کادر متنی با عنوان Event library برای جستجوی wil card وجود دارد که توسط آن می توانید رویداد مورد نظر را جستجو کنید ،به عبارتی نام هر Event ی را تایپ کنید بر اساس متن وارد شده لیست رویدادها فیلتر خواهد شد .
با توجه به مثال ما دو Event با عنوان های sql_batch_completed و rpc_completed را انتخاب میکنیم . بعد از انتخاب هر کدام از Event ها بر روی فلش سمت راست < کلیک میکنیم تا آن event به قسمت Selected events منتقل شود .

برای پیکربندی Event های انتخاب شده بر روی دکمه Configure در بالای صفحه سمت راست کلیک کنید .

با کلیک بر روی دکمه Configure صفحه ای مشابه تصویر زیر را مشاهده خواهید نمود .

در این صفحه برای پیکربندی Event ها دارای سه سربرگ هستیم
سربرگ Global Fields ( Actions ) :
در این سربرگ میتوانیم اطلاعات (Action) اضافه ای را به Eventی که انتخاب کرده ایم اضافه کنیم، برای هر Action می توانید توضیحات مربوط به آن را مشاهده کنید . در قسمت Global Fields (Action) گزینه های زیر را انتخاب می نماییم تا علاوه بر اطلاعات پیش فرض این موارد نیز برای ما مانیتور و گزارش داده شوند .
sql_text , database_name , username , client_hostname
سربرگ Filter ( Predicate ) :
در این سربرگ می توانیم یک شرط برای Event تعریف کنیم ، این شرط دقیقا همانند عبارت Where در یک کوئری عمل می کند . برای تعیین شرط مورد نظر بر روی گزینه Click here to add a clause کلیک کنید تا یک سطر جهت تعیین شرط نمایش داده شود ، در این مثال ما میخواهیم تعیی کنیم کوئری های که بیشتر از 5 ثانیه زمان برده اند را ثبت کند .

نکته : طبق توضیحات، duration بر حسب میکرو ثانیه محاسبه می گردد ، هر 1,000,000 میکروثانیه میشود 1 ثانیه .
سربرگ Event Fields :
در این سربرگ می توانیم Action های که مانیتور میشوند را مشاهده کنیم ، در این صفحه تعدادی از Action ها قابل انتخاب می باشند که میتوانیم آنها را انتخاب یا از حالت انتخاب خارج کنیم ولی یکسری از Action های دیگر هستند که قابل انتخاب شدن نمی باشند ، آنها پیش فرض های مربوط به آن Action می باشند .
بعد از پیکربندی Session نحوه ذخیره سازی Log های گرفته شده توسط Session تعریف شده را باید مشخص نمائیم ، برای این مورد از سمت راست صفحه بر روی Data Storage کلیک کنید .

در این صفحه می توانیم با کلیک بر روی Click here to add a target ، نحوه نگهداری لاک های مانیتور شده را مشخص کنیم که در این قسمت ما گزینه Event_file را انتخاب میکنیم و سپس مسیری که میخواهیم فایل یا فایل های Log ذخیره شوند را مشخص میکنیم همچنین می توانیم تعداد فایل و میزان فضای تخصیصی داده شده به هر فایل را مشخص نماییم .

در نهایت برای ایجاد Session مورد نظر بر روی دکمه OK کلیک میکنیم ، اکنون می توانیم Session تعریف شده را در زیر مجموعه Sessions مشاهده نماییم که با علامت قرمز رنگ به معنی Stop مشخص شده است .

اکنون می توانیم با راست کلیک بر روی Session مورد نظر و انتخاب گزینه Start Session فرآیند لاگ گیری و مانیتورینگ را شروع کنیم .

بعد از start با انتخاب گزینه Watch Live Data می توانید به صورت آنلاین رکورد های در حال لاگ گیری را مشاهده نماییم .
💬 نظرات (0)
هنوز نظری ثبت نشده است. اولین نفری باشید که نظر میدهید!
📝 ثبت نظر جدید