ExtendedEvents.sql 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. -- LWP related extended events Demo
  2. CREATE EVENT SESSION [PerfStats_Node] ON SERVER
  3. ADD EVENT sqlserver.query_thread_profile(
  4. ACTION(sqlos.scheduler_id,sqlserver.database_id,sqlserver.is_system,sqlserver.plan_handle,sqlserver.query_hash_signed,sqlserver.query_plan_hash_signed,sqlserver.server_instance_name,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text))
  5. --ADD TARGET package0.ring_buffer(SET max_memory=(25600))
  6. ADD TARGET package0.event_file(SET filename=N'C:\IP\Tiger\SQL Intersection\SQL Intersection Winter 2018\Gems to Help You Troubleshoot Query Performance\new_xevents\PerfStats_Node.xel',max_file_size=(50),max_rollover_files=(2))
  7. WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
  8. GO
  9. USE AdventureWorks2016CTP3
  10. GO
  11. DROP EVENT SESSION [PerfStats_Node] ON SERVER
  12. GO
  13. ALTER EVENT SESSION [PerfStats_Node] ON SERVER STATE = start;
  14. GO
  15. -- Execute plan with many nodes
  16. SELECT e.[BusinessEntityID],
  17. p.[Title],
  18. p.[FirstName],
  19. p.[MiddleName],
  20. p.[LastName],
  21. p.[Suffix],
  22. e.[JobTitle],
  23. pp.[PhoneNumber],
  24. pnt.[Name] AS [PhoneNumberType],
  25. ea.[EmailAddress],
  26. p.[EmailPromotion],
  27. a.[AddressLine1],
  28. a.[AddressLine2],
  29. a.[City],
  30. sp.[Name] AS [StateProvinceName],
  31. a.[PostalCode],
  32. cr.[Name] AS [CountryRegionName],
  33. p.[AdditionalContactInfo]
  34. FROM [HumanResources].[Employee] AS e
  35. INNER JOIN [Person].[Person] AS p
  36. ON RTRIM(LTRIM(p.[BusinessEntityID])) = RTRIM(LTRIM(e.[BusinessEntityID]))
  37. INNER JOIN [Person].[BusinessEntityAddress] AS bea
  38. ON RTRIM(LTRIM(bea.[BusinessEntityID])) = RTRIM(LTRIM(e.[BusinessEntityID]))
  39. INNER JOIN [Person].[Address] AS a
  40. ON RTRIM(LTRIM(a.[AddressID])) = RTRIM(LTRIM(bea.[AddressID]))
  41. INNER JOIN [Person].[StateProvince] AS sp
  42. ON RTRIM(LTRIM(sp.[StateProvinceID])) = RTRIM(LTRIM(a.[StateProvinceID]))
  43. INNER JOIN [Person].[CountryRegion] AS cr
  44. ON RTRIM(LTRIM(cr.[CountryRegionCode])) = RTRIM(LTRIM(sp.[CountryRegionCode]))
  45. LEFT OUTER JOIN [Person].[PersonPhone] AS pp
  46. ON RTRIM(LTRIM(pp.BusinessEntityID)) = RTRIM(LTRIM(p.[BusinessEntityID]))
  47. LEFT OUTER JOIN [Person].[PhoneNumberType] AS pnt
  48. ON RTRIM(LTRIM(pp.[PhoneNumberTypeID])) = RTRIM(LTRIM(pnt.[PhoneNumberTypeID]))
  49. LEFT OUTER JOIN [Person].[EmailAddress] AS ea
  50. ON RTRIM(LTRIM(p.[BusinessEntityID])) = RTRIM(LTRIM(ea.[BusinessEntityID]))
  51. GO
  52. ALTER EVENT SESSION [PerfStats_Node] ON SERVER STATE = stop;
  53. GO
  54. -- Choose any event and let's open the associated cached plan.
  55. -- I want to see which operator this one is, and where in the plan it sits
  56. SELECT qp.query_plan
  57. FROM sys.dm_exec_query_stats qs
  58. CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
  59. WHERE CAST(qs.query_plan_hash AS BIGINT) = -832496756154281217
  60. GO
  61. -- How will I search for my node_id? Use showplan search in SSMS.
  62. -------------------------------
  63. -- Now for a new event. A LWP-based "query_post_execution_showplan"
  64. DROP EVENT SESSION [PerfStats_LWP_Plan] ON SERVER
  65. GO
  66. CREATE EVENT SESSION [PerfStats_LWP_Plan] ON SERVER
  67. ADD EVENT sqlserver.query_plan_profile(
  68. ACTION(sqlos.scheduler_id,sqlserver.database_id,sqlserver.is_system,sqlserver.plan_handle,sqlserver.query_hash_signed,sqlserver.query_plan_hash_signed,sqlserver.server_instance_name,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text))
  69. --ADD TARGET package0.ring_buffer(SET max_memory=(25600))
  70. ADD TARGET package0.event_file(SET filename=N'C:\IP\Tiger\SQL Intersection\SQL Intersection Winter 2018\Gems to Help You Troubleshoot Query Performance\new_xevents\PerfStats_LWP_Plan.xel',max_file_size=(50),max_rollover_files=(2))
  71. WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
  72. GO
  73. ALTER EVENT SESSION [PerfStats_LWP_Plan] ON SERVER STATE = start;
  74. GO
  75. -- Let's run the following query
  76. SELECT e.[BusinessEntityID],
  77. p.[Title],
  78. p.[FirstName],
  79. p.[MiddleName],
  80. p.[LastName],
  81. p.[Suffix],
  82. e.[JobTitle],
  83. pp.[PhoneNumber],
  84. pnt.[Name] AS [PhoneNumberType],
  85. ea.[EmailAddress],
  86. p.[EmailPromotion],
  87. a.[AddressLine1],
  88. a.[AddressLine2],
  89. a.[City],
  90. sp.[Name] AS [StateProvinceName],
  91. a.[PostalCode],
  92. cr.[Name] AS [CountryRegionName],
  93. p.[AdditionalContactInfo]
  94. FROM [HumanResources].[Employee] AS e
  95. INNER JOIN [Person].[Person] AS p
  96. ON RTRIM(LTRIM(p.[BusinessEntityID])) = RTRIM(LTRIM(e.[BusinessEntityID]))
  97. INNER JOIN [Person].[BusinessEntityAddress] AS bea
  98. ON RTRIM(LTRIM(bea.[BusinessEntityID])) = RTRIM(LTRIM(e.[BusinessEntityID]))
  99. INNER JOIN [Person].[Address] AS a
  100. ON RTRIM(LTRIM(a.[AddressID])) = RTRIM(LTRIM(bea.[AddressID]))
  101. INNER JOIN [Person].[StateProvince] AS sp
  102. ON RTRIM(LTRIM(sp.[StateProvinceID])) = RTRIM(LTRIM(a.[StateProvinceID]))
  103. INNER JOIN [Person].[CountryRegion] AS cr
  104. ON RTRIM(LTRIM(cr.[CountryRegionCode])) = RTRIM(LTRIM(sp.[CountryRegionCode]))
  105. LEFT OUTER JOIN [Person].[PersonPhone] AS pp
  106. ON RTRIM(LTRIM(pp.BusinessEntityID)) = RTRIM(LTRIM(p.[BusinessEntityID]))
  107. LEFT OUTER JOIN [Person].[PhoneNumberType] AS pnt
  108. ON RTRIM(LTRIM(pp.[PhoneNumberTypeID])) = RTRIM(LTRIM(pnt.[PhoneNumberTypeID]))
  109. LEFT OUTER JOIN [Person].[EmailAddress] AS ea
  110. ON RTRIM(LTRIM(p.[BusinessEntityID])) = RTRIM(LTRIM(ea.[BusinessEntityID]))
  111. OPTION (RECOMPILE, USE HINT('QUERY_PLAN_PROFILE'))
  112. GO
  113. ALTER EVENT SESSION [PerfStats_LWP_Plan] ON SERVER STATE = stop;
  114. GO
  115. -- Let's see the event and what it provides