Extended Events vs SQL Trace im Vergleich

– oder warum SQL Trace & Profiler einfach von gestern sind 🙂

Zur Erinnerung: Extended Events sind seit SQL Server 2008 in SQL Server integriert. Und seit SQL Server 2012 SP1 sind alle Events verfügbar, die es in SQL Trace gibt. Zudem sind Extended Events seit SQL Server 2012 auch für Analysis Services verfügbar (Tracing Analysis Services (SSAS) with Extended Events – Yes it works and this is how).

Für alle, die noch mit dem alten Werkzeug SQL Server Profiler (Profiler ist das Frontend für SQL Trace, gestartet mit sp_trace_create) arbeiten, und sich noch nicht für die neue Technologie entscheiden konnten, hier eine kleine Entscheidungshilfe.

Was Extended Events (XEvents) besser als SQLTrace machen:

  • Einzige Möglichkeit neue Features wie FileStream, FileTable, AlwaysOn, ColumnStore, Hekaton/XTP etc. zu Tracen
  • Viel mehr Events tracebar, auch bereits für ältere Releases (siehe *1, *2 unten)
  • Deutlich geringerer Beobachter-Overhead siehe auch: Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load
  • Performance/Last lässt sich konfigurieren & tunen
  • Events und Filter lassen sich live anpassen – während aktiver Session also
  • Ofiziell 2 µs/Event gg. 4ms/Event in SQLTrace
  • Event-Verlust konfigurierbar
  • Effiziente Filterung durch Architektur
  • Komplexe Prädikate wie z.B. Zähler oder last_error, less_than_min_datatype oder greater_than_max_datatype
  • Korrelation von Events möglich
  • Möglichkeit Events vom Client bis in die Datenbank zu verfolgen
  • Einfache Automatisierung
  • Direkt in Management Studio integriert
  • Viele Analysen direkt in der GUI möglich (Um diese noch zu verbessern, bitte hier bei Microsoft Connect voten: Extended Events UI Export Display Settings: include grouping)
  • Query_hash zum Identifizieren von identischen Abfragen verfügbar
  • Keine 10 Klicks zum Aufsetzen einer simplen Session inkl. Filter
  • Unterschiedliche Speicher-Ziele für EventDaten zur Auswahl (6)
  • „Ergebnisorientierte“ Ziele wie Counter und Histogramm
  • Multiple Ziele lassen sich für “On the fly – Top-Down Analysen” kombinieren
  • Möglichkeiten für ganz neue Einblicke in Interna der Datenbank-Engine (Latching, Spinlocks, Multi-victim-Deadlock, Wait_Infos per session/query, Caching-Vorgänge, Ghost-cleanup, Analyse von Page Splits, Page-Compression Vorgänge, um nur einige zu nennen)
  • Stack Tracen eines einzelnen Prozesses möglich – anstelle eines vollständigen Server Dumps
  • Definition mit Standard DDL-Statements
  • API zur Integration in eigene Tools verfügbar
  • PowerShell-Unterstützung
  • Last but not least: Endlich ein Grund, XML & XQuery zu lernen? 😉

*1

Extended Events vs. SQL trace Events per Version

*2

As an example:

For Service Broker there are: 15 Events in SQLTrace vs. 44 Events in XEvents (SQL Server 2012 SP1)

Ich hoffe, das hilft dem einen oder anderen, die alte Gewohnheit abzulegen, und die kleine Lernphase in Kauf zu nehmen.

Eine Liste aller Extended Events in SQL Server 2012 SP1 samt ihrem Gegenstück in SQL Trace, welche man für Migrationszwecke (SQLTrace -> XEvent Trace) verwenden kann, findet sich auf dieser Seite. (Aufgrund einer Größenbeschränkung passte sie nicht mehr hier hinein.)

PS: Für 2014 befindet sich mit den SQL Server Master-Classes zum Thema „Tracing mit Extended Events auch die nächste Runde der Trainings zu diesem Thema in der Planung 🙂

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.