Sdílet prostřednictvím


Relace rozšířených událostí

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Relace Extended Events se vytvoří v procesu databázového stroje SQL Serveru, který hostuje modul Extended Events. Následující aspekty relace rozšířených událostí poskytují kontext pro porozumění infrastruktuře rozšířených událostí a probíhajícímu zpracování:

  • Stavy relací. Různé stavy, ve kterých se nachází relace rozšířených událostí, když jsou vykonávány příkazy CREATE EVENT SESSION a ALTER EVENT SESSION.

  • Obsah a charakteristiky relace. Obsah relace rozšířených událostí, jako jsou cíle a události, a způsob, jakým tyto objekty souvisejí v relaci nebo mezi relacemi.

Stavy relací

Následující obrázek znázorňuje různé stavy relace Extended Events.

Diagram znázorňující stav relace Rozšířených událostí.

Na předchozím obrázku si můžete všimnout, že stav relace se mění, když jsou vydávány různé příkazy jazyka DDL (Data Definition Language) pro relaci událostí. Následující tabulka popisuje tyto změny ve stavu.

Popisek obrázku Příkaz DDL Description
Create CREATE EVENT SESSION Hostitelský proces vytvoří objekt relace, který obsahuje metadata poskytnutá CREATE EVENT SESSION. Proces hostitele ověří definici relace, ověří úroveň oprávnění uživatele a uloží metadata do master databáze. V tomto okamžiku relace není aktivní.
Alter ALTER EVENT SESSION, STATE=START Hostitelský proces spustí relaci. Proces hostitele přečte uložená metadata, ověří definici relace, ověří úroveň oprávnění uživatele a vytvoří relaci. Objekty relace, jako jsou události a cíle, se načítají a zpracování událostí je aktivní.
Alter ALTER EVENT SESSION, STATE=STOP Proces hostitele zastaví aktivní relaci, ale zachová metadata.
Drop DROP EVENT SESSION V závislosti na tom, zda je relace aktivní, komponenta Drop (DROP SESSION) odstraní metadata a zavře aktivní relaci, nebo pokud relace není aktivní, odstraní pouze metadata relace.

Obsah a charakteristiky relace

Relace rozšířených událostí mají implicitní hranice v tom, že konfigurace jedné relace nemění konfiguraci jiné relace. Tyto hranice však nebrání tomu, aby událost nebo cílový typ byly použity ve více než jednom sezení.

Následující obrázek ukazuje obsah relace a vztah mezi balíčky a relacemi.

Diagram znázorňující koexistence objektů a sdílení v relacích

Při odkazu na předchozí obrázek mějte na paměti, že:

  • Mapování mezi balíkovými objekty a relacemi je mnoho ku mnoha, což znamená, že objekt určitého typu se může objevit v několika relacích a relace může obsahovat několik objektů.
  • Stejnou událost (událost 1) nebo cílový typ (Cíl 1) lze použít ve více než jedné relaci.

Relace mají následující charakteristiky:

  • Akce a predikáty jsou vázané na události na základě konkrétní relace. Pokud máte událost 1 v relaci A s akcí 1 a predikátem Z, nemá to žádný vliv na událost 1 v relaci B s akcí 2 a akcí 3 bez predikátu.
  • Zásady jsou připojené k relacím pro zpracování odesílání, ukládání do vyrovnávací paměti a sledování kauzality.

Ukládání do vyrovnávací paměti označuje způsob, jakým se data událostí ukládají během běhu relace událostí. Zásady ukládání do vyrovnávací paměti určují, kolik paměti se má použít pro data událostí, a zásady ztráty dat pro události. Odeslání odkazuje na dobu, po kterou události zůstávají ve vyrovnávací paměti, než jsou předány cílům ke zpracování.

Sledování kauzality sleduje práci napříč několika úkoly. Pokud je povolené sledování kauzality, každá událost vyvolaná v systému má jedinečné ID činnosti. ID aktivity je kombinace hodnoty GUID, která zůstává konstantní ve všech událostech úkolu, a pořadové číslo, které se zvýší při každém spuštění události. Když jeden úkol způsobí, že se práce provádí na jiném úkolu, ID aktivity nadřazeného úkolu se odešle do podřízeného úkolu. Podřízený úkol vypíše ID aktivity nadřazeného objektu při prvním spuštění události.

Relace událostí vázané na čas

Počínaje SQL Serverem 2025 (17.x) můžete vytvořit relaci událostí, která se automaticky zastaví po uplynutí zadaného času. To pomáhá vyhnout se situacím, kdy relace můžou zůstat omylem spuštěné na neomezenou dobu, což vede ke spotřebě prostředků a potenciálně ke generování velkého množství dat.

Pokud jsou data událostí vytvořená relací objemná, časově omezené relace událostí vám pomůžou zachytit menší cílená diagnostická data po konkrétní dobu. Relaci událostí vázanou na čas můžete spustit ručně nebo pomocí naplánované úlohy v době vašeho výběru a se zárukou, že relace nebude po neomezenou dobu spuštěná.

Pokud chcete vytvořit relaci události vázanou na čas, zadejte MAX_DURATION argument při vytváření nebo úpravě relace. Další informace naleznete v tématu CREATE EVENT SESSION a ALTER EVENT SESSION.

Stejně jako u jakékoli relace událostí můžete zastavit relaci vázanou na čas před uplynutím maximální doby trvání pomocí ALTER EVENT SESSION ... STATE = STOP příkazu. Pokud je relace znovu spuštěna, znovu musí uplynout celá doba trvání zadaná MAX_DURATION, než se relace automaticky zastaví.

Můžete také upravit existující relaci událostí pomocí ALTER EVENT SESSION a buď zadat jinou maximální dobu trvání, nebo ji odebrat zadáním MAX_DURATION = UNLIMITED. Chcete-li upravit nastavení MAX_DURATION, musí být relace zastavena.

Pokud je relace události vázána na čas, max_duration sloupec v zobrazení katalogu sys.server_event_sessions zobrazuje maximální dobu trvání relace v sekundách. Sezení události má neomezenou dobu trvání, pokud je hodnota nastavena na nulu.