۱۴۰۴/۰۷/۱۴ Nebular

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
Accept Cookies
[your-shortcode]