۱۴۰۴/۰۷/۱۴
Extended Events در SQL Server
۱. مفهوم کلی
Extended Events (XEvents) یک فریمورک داخلی مانیتورینگ و آنالیز عملکرد SQL Server است که از نسخه 2008 معرفی شده است.
هدفش جمعآوری دادههای رخدادهای مختلف سیستم است تا مشکلات Performance، Deadlock، خطاها و رفتار کوئریها را بررسی کنیم.
۲. چه کاری انجام میدهد
- ردیابی رخدادها (Events Tracking):
هر چیزی که در SQL Server اتفاق میافتد، از جمله شروع و پایان کوئریها، خطاها، Waitهای سیستم، Lockها، Deadlockها، میتواند به عنوان Event ثبت شود. - جمعآوری اطلاعات دقیق:
بر خلاف SQL Profiler که سنگین و قدیمی است، XEvents خیلی سبک و قابل شخصیسازی است و فقط دادههای مورد نیاز را جمع میکند. - تحلیل Performance:
میتوانیم ببینیم کدام کوئریها بیشتر منابع مصرف میکنند، کدام ایندکسها استفاده نشدهاند، کجا Wait طولانی رخ داده و غیره. - جایگزینی SQL Profiler:
Extended Events در واقع نسل بعدی Profiler است، با کارایی بالاتر و overhead کمتر.
۳. اجزاء اصلی Extended Events
| جزء | توضیح |
|---|---|
| Event | چیزی که اتفاق میافتد، مثل sql_statement_completed یا deadlock |
| Target | جایی که دادهها ذخیره میشوند، مثل فایل، ring buffer یا memory |
| Session | مجموعهای از Eventها و Targetها که با هم جمعآوری میشوند |
| Predicate / Filter | شرط برای محدود کردن دادههای جمعآوری شده |
۴. مثال کاربردی
فرض کنید میخواهیم کوئریهایی که بیشتر از ۱ ثانیه طول میکشند را پیدا کنیم:
CREATE EVENT SESSION LongQueries
ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
WHERE duration > 1000000 -- میکروثانیه
)
ADD TARGET package0.ring_buffer;
GO
ALTER EVENT SESSION LongQueries ON SERVER STATE = START;
- این Session هر کوئری که بیش از ۱ ثانیه طول بکشد را ثبت میکند.
- بعداً میتوانیم از دادههای ring_buffer گزارش تهیه کنیم و تحلیل کنیم.
💡 جمعبندی :
- Extended Events ابزار داخلی SQL Server برای مانیتورینگ و دیباگینگ است.
- نسبت به Profiler سبکتر، انعطافپذیرتر و دقیقتر است.
- کاربرد اصلی: تحلیل عملکرد، رفع مشکلات، تشخیص Deadlock و بررسی Queryها.
Accept Cookies
[your-shortcode]