Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x)
Azure SQL Database
U trvalých statistik uchovává primární replika statistické údaje jako trvalé statistiky, které je možné odeslat do všech sekundárních replik. K tomuto procesu dochází automaticky bez nutnosti ručního zásahu. Mechanismus trvalosti statistik používá úložiště dotazů pro infrastrukturu čitelných sekundárních replik.
Úložiště dotazů pro čitelné sekundární repliky je dostupné v SQL Serveru 2025 (17.x) a Azure SQL Database.
Úložiště dotazů pro čitelné sekundární repliky je ve výchozím nastavení zapnuté v SQL Serveru 2025 (17.x) a Azure SQL Database.
Background
Při čtení sekundárních replik lze statistiky také automaticky vytvořit, když je povolená možnost automatického vytváření statistik , ale tyto statistiky jsou dočasné a při restartování instance zmizí. Pokud chybí statistika databáze jen pro čtení nebo snímek jen pro čtení nebo je zastaralá, databázový stroj vytvoří a udržuje dočasné statistiky v tempdb.
Když databázový stroj vytvoří dočasnou statistiku, připojí se název statistiky s příponou _readonly_database_statistic k rozlišení dočasných statistik od trvalých statistik. Přípona _readonly_database_statistic je vyhrazena pro statistiky generované SQL Serverem. Důvodem, proč byl tento přístup proveden, bylo řešit úlohy, které se spouštějí proti čitelným sekundárním replikám, které můžou vyžadovat odlišné statistiky, které na primární replice neexistují.
Dočasné statistiky vytvořené na sekundárních replikách zůstanou viditelné pouze pro repliku, která je vygenerovala. Primární replika nikdy nemá přímý přístup k těmto dočasným statistickým objektům a je si vědoma pouze trvalého objektu statistiky po jeho uložení. Pokud se dočasné statistiky uchovávají na primární replice, budou dostupné všem replikám ve skupině dostupnosti prostřednictvím mechanismu synchronizace.
Podpora zobrazení katalogu
Aby bylo možné podporovat porovnání vytváření nebo aktualizace statistik mezi sekundárním a primárním serverem a pomoci pochopit, kde byly statistiky vytvořeny, byly do sys.stats zobrazení katalogu přidány tři nové sloupce.
| Název sloupce | Datový typ | Description |
|---|---|---|
replica_role_id |
tinyint |
1 = primární, 2 = sekundární, 3 = geografická sekundární, 4 = sekundární geografická vysoká dostupnost |
replica_role_desc |
nvarchar(60) | Primární, Sekundární, Geografické sekundární, Geografická sekundární vysoká dostupnost |
replica_name |
sysname | Název instance repliky ve skupině dostupnosti
NULL pro primární repliku |
Tyto sloupce sledují vlastnictví a původ statistik v průběhu životního cyklu perzistence. Když sekundární replika vytvoří dočasnou statistiku a zůstanou na primárním serveru, replica_role_id a replica_name sloupce identifikují původní repliku. Pokud se tyto trvalé statistiky později aktualizují na primární replice, vlastnictví se přenese na primární, což se projeví v těchto sloupcích.
Chování uchovávání statistik
Pokud jsou dočasné statistiky uloženy ze sekundární repliky na primární, dojde k několika důležitým jevům: Dočasné statistiky na sekundární replice nejsou po uložení automaticky odebrány. Dotazy, které původně aktivovaly vytvoření těchto dočasných statistik, je nadále používají, dokud dotaz neprojde rekompilacem nebo se replika restartuje. To znamená, že dočasné i trvalé verze stejné statistiky mohou dočasně existovat.
Optimalizátor při určování, jestli se má použít statistika, nebere v úvahu vlastnictví repliky. Vyhodnocuje všechny dostupné statistiky na základě pokrytí sloupců a odhadů selektivity. Informace o replice se udržují především pro účely sledování a řešení potíží.
K velmi užitečnému scénáři dochází v případě, že se trvalé statistiky vytvořené z dočasných statistik stanou zastaralými. Pokud u primárních ovlivňujících sloupce v těchto statistikách dojde k významným změnám dat, může se trvalé statistiky považovat za zastaralé. Když dotazy na sekundární repliky odkazují na tyto sloupce, sekundární replika aktualizuje statistiky na základě svého zobrazení dat, což odráží změny použité prostřednictvím procesu opětovného přehrání.
Stručně řečeno, trvalost neodebere schopnost sekundární aktualizovat zastaralé statistiky; jednoduše přidá mechanismus pro sdílení statistik napříč replikami.
Observability
Rozšířené události
persisted_stats_operation (Operační kanál) je vyvolán pro enqueued, dequeued, processeda failed události. To může být užitečné k monitorování, pokud statistika zprávy nemůže být zachována na primárním serveru nebo pokud je zájem sledovat zařízení pro zpracování zpráv. Dočasná statistika zůstává na tempdb sekundárních replikách, zatímco proces na pozadí opakuje odesílání zprávy, pokud dojde k potížím s komunikací mezi primárními a sekundárními replikami.
Příklady souvisejících chybových zpráv, které lze protokolovat do protokolu ERRORLOG
- 9131: Funkce je zakázaná během spouštění SQL.
- 9136: Tabulka nebo index se vynechala nebo upravila.
- 9137: Schéma se změnilo od zahájení transakce s využitím snímku; opakujte pokus znovu.
- 9139: Statistiky jsou příliš velké, aby se odesílaly na primární server.
Následující dotaz může poskytnout přehled o statistikách v tabulce, včetně statistik trvalých ze sekundárních replik:
SELECT sch.[name] AS SchemaName,
obj.[name] AS TableName,
s.[name] AS StatsName,
CASE
WHEN s.stats_id >= 2 AND s.auto_created = 1 THEN 'AUTO_STATS'
WHEN s.stats_id >= 2 AND s.auto_created = 0 THEN 'USER_CREATED_STATS'
ELSE 'INDEX_STATS'
END AS type,
s.is_temporary,
CASE WHEN s.replica_name IS NULL
AND s.replica_role_desc = 'PRIMARY'
AND s.stats_id >= 2
AND s.auto_created = 1
THEN 'PRIMARY'
ELSE s.replica_name
END AS replica_name,
s.replica_role_id,
s.replica_role_desc
FROM sys.schemas AS sch
INNER JOIN sys.objects AS obj
ON sch.schema_id = obj.schema_id
INNER JOIN sys.stats AS s
ON obj.object_id = s.object_id
WHERE sch.[name] <> 'sys'
ORDER BY sch.[name], obj.[name], s.stats_id;
Úvahy
Trvalá statistika pro funkci sekundárních replik s možností čtení je ve výchozím nastavení povolená, pokud je povolená možnost automatického vytváření statistik a READABLE_SECONDARY_TEMPORARY_STATS_AUTO_CREATEREADABLE_SECONDARY_TEMPORARY_STATS_AUTO_UPDATE možnosti konfigurace s vymezeným oborem databáze, což je výchozí konfigurace. Neexistuje žádná konfigurace omezená na databázi, kterou by se dala funkce zapnout nebo vypnout.