Journ©es SQL Server 2011 Extended Events

download Journ©es SQL Server 2011  Extended Events

of 35

  • date post

    05-Aug-2015
  • Category

    Technology

  • view

    90
  • download

    5

Embed Size (px)

Transcript of Journ©es SQL Server 2011 Extended Events

1. Rejoignez la Communaut 2. VNEMENTS TENDUS (XE)& nouveauts Denali 3. SPEAKERDavid BAFFALEUF - dbaffaleuf@capdata.frDBA de production depuis 1999.Consultant et formateur SQL Server.Responsable technique du service DBA distance @ CapDataConsulting.SQL Server MVP. http://www.capdata.fr http://blog.capdata.fr 4. AGENDA Dfinition, organisation du moteur XE: packages, events,targets, etc Gestion et exploitation des traces. Comparatif XE vs SQL Trace. Bilan nouveauts Denali. Dmo / Q & A. 5. QUEST-CE QUE LE MOTEUR XE? Vers une volution logique: SQL Trace/sysperfinfo/dbccsqlperf(), puis DMV/DMF, ring buffers Architecture de gestion vnementielle imbrique aucoeur des moteurs relationnel et de stockage. Hautement configurable, faible impact. Trs grande richesse en nombre dvnementscapturables. (591 contre 180 dans SQL Trace) Intgration possible avec traces systme (ETW). SQL Trace en voie dobsolescence. 6. ORGANISATION DU MOTEUR XEtargetsmapstypesactionseventsPACKAGEPACKAGE(.dll)(.dll)XE ENGINEPACKAGE(.dll)WORKERDISPATCHER(+pool)predicatesXESESSXIOENSESSXIOENSESSIONEventsTargetsBuffersMETADATA EXECUTIONWW WWW WWsqllang.dllsqldk.dllsqlmin.dllSQL SERVER CORE ENGINEmessages 7. ORGANISATION DU MOTEUR XE Cloisonnement entre moteur dexcution etmtadonnes: permet dajouter aisment de nouveauxpackages et groupes dvnements dans une release, ouone-off au besoin pour debug (4 packages en 2008 RTM,8 en Denali CTP3) Les mtadonnes sont encapsules dans des packages(dll externes) et exposent des catgories dobjetsmanipulables dans une session: events, targets, actions,etc Le moteur fournit un pool de workers autonome pourragir de manire asynchrone (consommer un vnement,crire dans un target, etc) 8. PACKAGES & EVENTS Les packages contiennent les mtadonnes dfinissantun ensemble commun dvnements, de donnesassocies, doprateurs et de destinations de trace. Ils sont dfinis dans une dll externe. 8 packages disponibles en CTP3: package0, sqlserver, sqlos,SecAudit, ucs, sqlclr, filestream, sqlserver*. Exposs par sys.dm_xe_packages. Certains packages sont privs et non utilisablesdirectement (SecAudit):SELECT p.* FROM sys.dm_xe_packages pWHERE (p.capabilities IS NULLOR p.capabilities 1); 9. PACKAGES & EVENTS Les events dfinissent des points dintrt dans le flotdexcution du code. Un test boolen dtermine chaquepassage si un vnement est dclar dans une trace activeet sil valide le prdicat ou non. Les events sont classs selon la norme utilise pour ETW:Admin, Analytic, Debug, Operationnal. En tout 591 events publics rpartis dans 7 packages. Exposs par sys.dm_xe_objects avec object_type =event:SELECT p.name AS package_name, o.name AS event_name, FROMsys.dm_xe_packages AS pJOIN sys.dm_xe_objects AS o ON p.guid = o.package_guidWHERE (p.capabilities IS NULL OR p.capabilities & 1 = 0)AND (o.capabilities IS NULL OR o.capabilities & 1 = 0)AND o.object_type = 'event' 10. PACKAGES & EVENTSEvents par package(SQL Server Denali CTP3)sqlserver* = sqlmin.dll 11. PACKAGES & EVENTS Package0 (sqldk.dll): package racine, ne contient pasdvnements, mais dfinit les objets de plus haut niveau:tous les targets, tous les types et messages, plus quelquesprdicats, actions systme, et les maps ETW. sqlserver (sqllang.dll): dfinit les principaux vnementsassocis aux moteurs relationnel / stockage(sql_statement_completed, sp_statement_completed, login,logout, auto_stats, etc) => 176 events. sqlos (sqldk.dll): trace les vnements relatifs chaquenoeud SQLOS (workers, tasks, async IO, appels systmes,scheduling, synchronisation, etc). Debug avanc => 61events. 12. PACKAGES & EVENTS SecAudit (sqllang.dll) : utilis en interne pour les AuditSpecifications. Non utilisable dans une session manuelle(capabilities = 1). * ucs (sqllang.dll): Unified Communication Stack. TCP Endpoints,Service Broker => 21 events. sqlclr (sqllang.dll): pour dboguer des problmes dans unappdomain SQLCLR (chec allocation de mmoire). => 4events. filestream (sqllang.dll): tend les vnements capturablesdepuis sqlserver/sqllang.dll pour filestream, notamment lesinteractions avec RsFx. => 13 events. sqlserver (sqlmin.dll): grosse extension du package sqlserverinitial (+316 events)* Pour plus de dtails, cf session Scurit dans SQL Server D. Barbarin. 13. TARGETS Le target est la destination dans laquelle les informationscaptures sur lvnement seront stockes pour interrogation.Souvent les donnes sont stockes de manire brute pourgagner de la place. Les 6 targets disponibles sont tous dfinis dans package0:etw_classic_sync_target, histogram, event_file, event_counter,pair_matching, ring_buffer. Chaque target a ses applications, ses avantages et sesinconvnients. On peut en dclarer plusieurs par session. Synchrone / asynchrone: consomm immdiatement par le SOSworker, ou consomm plus tard par un des workers dispatchpar le moteur XE. Exposs dans sys.dm_xe_objects (object_type=target). 14. RING_BUFFER En mmoire seulement, taille par dfaut illimite(max_memory=+oo, max_events_limit=1000). Recyclage soit lorsque le ring buffer est plein ou que lenombre max devents retenir est atteint(occurrence_number ). Sinon vid lors dun restart ou dunarrt de la session XE. Excution asynchrone. Les donnes sont matrialises en XML linterrogationvia sys.dm_xe_session_targets. Pas recommand pour les sessions gnrant une grandequantit devents par seconde, mais pratique si prdicattrs filtrant. 15. EVENT_FILE Anciennement asynchronous_file_target. Permet de conserver un historique de trace persistant. Les donnes sont matrialises en XML lors de lappel sys.fn_xe_file_target_read_file(). Entirement configurable: nom, chemin, taille max,rollover, taille dincrment... Excution asynchrone. Plus de fichier XEM en CTP3+. Eviter dagrger directement via la TVF (lent). 16. EVENT_COUNTER Anciennement synchronous_event_counter. Compte le nombre devents dclenchs par une session. Permet de tester les prdicats et valuer si le target choisiest adapt (ring_buffer, event_file). Excution synchrone, mais impact minimum. Informations matrialises en XML lors de linterrogationde sys.dm_xe_session_targets (idem ring buffers). 17. HISTOGRAM Anciennement bucketizers. Permet de regrouper des vnements autour dun critre(source). Par exemple compter les recompilations pardatabase_id. Permet ainsi de cibler ses efforts en fonction des rsultats. Excution asynchrone (plus de bucketizer synchrone) Informations matrialises en XML lors de linterrogationde sys.dm_xe_session_targets (idem ring buffers) 18. PAIR_MATCHING Permet de dtecter les events qui habituellement vont parpaire et qui sont orphelins: transaction ouverte, connexionactive, verrou ou latch non libr, requte en coursdexcution, etc Ncessite dtablir quels sont les events pairs: BEGIN/END,ou STARTING/COMPLETED. Difficult de trouver des vnements parfaitement pair--pair(ex: transaction, verrous) Limit 10000 events orphelins en CTP3+ pour viter lessaturations (max_orphans). 19. ETW_CLASSIC_SYNC_TARGET Passerelle vers un consommateur ETW type. Permet de mettre en corrlation des traces SQL Server etsystme via tracerpt et Windows Performance Analyzer. Le format de stockage est vari: texte, csv, XML, etc... Une seule session ETW active par instance. Les events SQL sont affichs mais pas dcrypts parPerformance Analyzer Vista/2008 (provider classic vsmanifest). Pas trs pratique: ncessite de nombreuses actionsmanuelles avec logman pour forcer le target flusher sesbuffers, et pour rellement couper la trace. 20. AUTRES OBJETS Actions: associes un event. Soit collecte de donnesrelatives levent (44) soit excution dune tcheparticulire (3, orientes debug). Maps: table de correspondance cls / valeurs (genredEventSubClass plus pouss). Par exemple les diffrentescauses de recompilation, les diffrents waits. Types: Dfinit les types de donnes utiliss (uint32,uint64, guid, xml). Proviennent tous du package0. Prdicates: mcanisme de filtrage, permet de diminuerdavantage lempreinte de XE sur les performances. Messages: messages renvoys par le moteur XE. Exposs dans sys.dm_xe_objects (object_type=). 21. EXPOSITION DES METADATAsys.dm_xe_packagespackage0, sqlserver,sqlos, SecAudit, ucs,filestream, sqlclr,sqlserver (sqlmin)sys.dm_xe_objectsevents, targets,predicates, actions,maps, typessys.dm_xe_object_columns-Donnes associes aux events- Options associes aux targetssys.dm_xe_map_valuesCorrespondance cl /valeurobject name +package guidpackage guidpackage guid map name 22. DEMO 1Metadata 23. SESSION XE Une session XE dfinit une trace compose dunensemble dvnements, actions prdicats et targetsdestins tre capturs pour analyse. Tous les lments constitutifs sont dfinis travers lacommande DML CREATE EVENT SESSION (ou via leGUI partir de Denali CTP3+). Les sessions peuvent tre dmarres, modifies ouarrtes sans avoir tre recres. Options de session XE: mmoire, max_dispatch_latency,startup_date, etc dynamiques. 24. GESTION DUNE SESSION XECREATE EVENT SESSION XE_RequetesLentes ON SERVERADD EVENT sqlserver.sql_statement_completed(ACTION (sqlserver.sql_text, sqlserver.plan_handle)WHERE sqlserver.database_id = 5 AND cpu_time > 10)ADD TARGET package0.ring_bufferWITH (max_dispatch_latency = 1 seconds);ALTER EVENT SESSION XE_RequetesLentes ON SERVERSTATE = START;ALTER EVENT SESSION XE_RequetesLentes ON SERVERSTATE = STOP;DROP EVENT SESSION XE_RequetesLentes ON SERVER; 25. EXPOSITION DES SESSIONS XEsys.dm_xe_sessionsListe des sessionscatalogues et optionsde sessionsys.dm_xe_session_targetsListe et contenu (XML) destargets par sessionsys.dm_xe_session_object_columnssys.dm_xe_session_event_actionsListe les actions par eventsys.dm_xe_session_eventsListe les events dfinis parsessionSessionaddressSessionaddressSessionaddressListe les options des targets et desevents par sessionSessionaddress 26. EXPLOITER LES RESULTATS Les targets couramment utiliss (ring buffer, event file)stockent des donnes brutes et compactes. Ces donnes sont exposes en XML via:sys.dm_