sql server extended events presentation from sql midlands user group 14th march 2013

34
SQL Server Extended Events What, Why, How, Who?

Upload: stuart-moore

Post on 01-Jul-2015

378 views

Category:

Technology


1 download

DESCRIPTION

Accompanying scripts are available from here - http://www.leaf-node.co.uk/?attachment_id=865

TRANSCRIPT

Page 1: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

SQL Server Extended Events

What, Why, How, Who?

Page 2: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Stuart Moore• Started with SQL Server 7 in 1998, 15 years later still working

with it, but newer versions as well.• Worked as DBA and Developer in that period.• Also work with Oracle, MySQL and Linux

• In spare time I’m most likely to be found studying a Mathematics degree with the OU, or sat on a bike saddle somewhere remote.

• Email: [email protected]• Twitter: @napalmgram

Page 3: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

What we’ve had

• SQL Trace – Server side tracing mechanism• SQL Profiler – Client side tool to use SQL Trace

Page 4: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

What was wrong with that?

• Performance hit– All event data captured, and then filtered– Especially bad if run through Profiler

Page 5: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• Not the most user friendly of syntax:

Page 6: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

So, Extended Events

• Introduced in SQL Server 2008.• ‘Extended’ in SQL Server 2008R2 – Unofficial GUI from Codeplex

• And again in SQL Server 2012– Now includes all SQL Trace functionality– Official GUI tool in SSMS

Page 7: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

SQL Server 2008 SQL Server 2008R2 SQL Server 2012

action 35 35 48

Event 253 257 616

Map 57 60 240

Pred_compare 111 111 77

Pred_source 29 29 44

Target 7 7 6

Type 29 29 28

Changes across SQL Server versions

Page 8: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• Extendable– New packages can be loaded, for instance for

Microsoft Support calls• Better performance– Filtering done as early as possible to avoid

overheads– You already have a session running and probably

not noticed: • System_health

Page 9: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• Sessions can be told to ‘lose’ events if performance degraded:– Allow_single_event_loss (Default)– Allow_multiple_event_loss– No_event_loss

• Can persist server restarts

Page 10: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Basic Example

• Demo

Page 11: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Packages

• All events, actions, types, etc belong to a Package.

• Registered packages can be seen in– sys.dm_xe_packages

• SQL 2012 ships with 8 packages. Others can be installed, usually by MS support for debugging faults

Page 12: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013
Page 13: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Why 2 sqlserver packages?select lm.name, xp.name from sys.dm_os_loaded_modules lminner join sys.dm_xe_packages xp on lm.base_address=xp.module_address;

Because each is owned by a different SQL Server module (dll)

Page 14: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• Packages loaded by corresponding module during startup.

• All events, objects, targets, etc are owned by a package

• But, all can be used interchangably– Ie; a sqlos event can capture sqlserver actions and

record in a package0 target• Anything marked ‘private’ is system access only:– SecAudit being the prime example

Page 15: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Sessions

• All defined event sessions recorded in– sys.server_event_sessions

• If session is running, it’s recorded in– Sys.dm_xe_sessions

Page 16: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Events• The events which can be monitored.– 616 in SQL Server 2012• Select * from sys.dm_xe_objects where

object_type=‘event’ and isnull(capability,’’)<>’private’

– Each event is ‘owned’ by a package:select b.name, a.* from sys.dm_xe_objects a inner join sys.dm_xe_packages b

on a.package_guid=b.guid where a.object_type='event' and isnull(a.capabilities_desc,'')<>'private'

Page 17: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

select b.name as 'Package', a.name, a.description from sys.dm_xe_objects a join sys.dm_xe_packages b on a.package_guid=b.guid where a.object_type='event' and isnull(a.capabilities_desc,'')<>'private';go

Page 18: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• A session can capture more than one event:

Create event session ex1 on serveradd event sqlserver.sql_statement_startingadd event sqlserver.sql_statement_completedadd target ring_buffer

Page 19: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

‘Payload’

• Each event ‘drops’ a payload to the ‘target’:

select b.name, a.name, a.type_name, a.description, a.column_type, a.column_value From sys.dm_xe_object_columns a join sys.dm_xe_objects b on a.object_package_guid=b.package_guid and a.object_name=b.nameand isnull(b.capability,’’)<>’private’

Page 20: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

select a.name, a.type_name, a.description, a.column_type, a.column_value from sys.dm_xe_object_columns a joinsys.dm_xe_objects b on a.object_package_guid=b.package_guid and a.object_name=b.namewhere b.name='sp_statement_completed';

Page 21: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• 3 column_type values:– readonly – internal value– data – values returned by default– Customizable – these can be changed, options

described in the description field, and default value in the column_value field.

Page 22: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Actions

• Actions are extra data/payload that can be collected when an event fires:

select b.name, b.description, a.* from sys.dm_xe_objects a join sys.dm_xe_packages b on a.package_guid=b.guid where a.object_type='action' and isnull(a.capabilities_desc,'')<>'private';

Page 23: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

select a.name, a.description from sys.dm_xe_objects a join sys.dm_xe_packages b on a.package_guid=b.guid where a.object_type='action' and isnull(a.capabilities_desc,'')<>'private';

Page 24: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Predicate Source

• Used to filter the events captured:select b.name, a.* From sys.dm_xe_objects a join sys.dm_xe_packages b on a.package_guid=b.guid where a.object_type='pred_source' and isnull(a.capabilities_desc,'')<>'private';

Page 25: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013
Page 26: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Predicate Compare

• Specialist comparators to be used in conjuction with the usual booleans (=,<,>,etc)

select b.name, a.* From sys.dm_xe_objects a join sys.dm_xe_packages b on a.package_guid=b.guid where a.object_type='pred_compare' and isnull(a.capabilities_desc,'')<>'private';go

Page 27: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

select a.name, a.description, a.type_nameFrom sys.dm_xe_objects a join sys.dm_xe_packages b on a.package_guid=b.guid where a.object_type='pred_compare' and isnull(a.capabilities_desc,'')<>'private';

Page 28: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Maps

• Means of mapping names to values for predicates– For example, Wait types to an ID

select b.name, a.name, a.map_key, a.map_value, b.description from sys.dm_xe_map_values ainner join sys.dm_xe_objects b on a.object_package_guid=b.package_guid and a.name=b.nameorder by b.name, a.map_key

Page 29: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

select a.name, a.map_key, a.map_value from sys.dm_xe_map_values ainner join sys.dm_xe_objects b on a.object_package_guid=b.package_guidand a.name=b.namewhere b.name like 'wait_types'order by b.name, a.map_key;

Page 30: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Targets

• Where the data ends up.– A number of different types, main differences:• Synchronous• Asynchronous• Memory resident• Persisted storage (disk)

Page 31: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

• Etw_classic_sync_target– Used for ETW, useful for devs for tracing through large

systems but out of scope here• Histogram & event_counter– Memory resident tally targets. Histogram used to group

data asynchronosyly, counter is a synchronous counter• Pair_matching– Memory resident and asynchronous. Used to pair up

events, eg; beginning and end of transaction• Event_file– Disk based asynchronous target, for bulk or long term

retention• Ring_Buffer– Memory based asynchronous FIFO target.

Page 32: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

Examples

• 1 – Deadlocks• 2 – Possible parameter sniffing• 3 – Capture Data file growth• 4 – Statement counting• 5 – Hunting for bad query syntax• 6 – Perfmon stats via GUI

Page 33: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

All Good?

• Not quite:– Can still drag performance down,– Viewing results in GUI still a resource hog

• But it’s the way forward

Page 34: SQL Server Extended Events presentation from SQL Midlands User Group 14th March 2013

References

• Jonathan Kehayias:– on the load impact of Extended Event sessions:

• http://bit.ly/XLeMWF

– 31 days of Xevents:• http://bit.ly/153GfZU

• MSDN– Overview

• http://bit.ly/13eCnCx

– Dynamic Management View• http://bit.ly/WWg4T1