Sdílet prostřednictvím


Konzistence dotazů

Konzistence dotazů odkazuje na to, jak se synchronizují dotazy a aktualizace. Existují dva podporované režimy konzistence dotazů:

  • Silná konzistence: Silná konzistence zajišťuje okamžitý přístup k nejnovějším aktualizacím, jako jsou připojení dat, odstranění a úpravy schématu. Výchozí režim konzistence je silná konzistence. Kvůli synchronizaci funguje tento režim konzistence z hlediska souběžnosti o něco méně dobře než slabý režim konzistence.

  • Slabá konzistence: Při slabé konzistenci může docházet ke zpoždění, než výsledky dotazů promítnou nejnovější aktualizace databáze. Tato prodleva se obvykle pohybuje od 1 do 2 minut. Slabá konzistence může podporovat vyšší míru souběžnosti dotazů než silná konzistence.

Pokud se například každou minutu ingestuje do tabulky v databázi 1000 záznamů, dotazy nad tabulkou spuštěnou se silnou konzistencí budou mít přístup k naposledy přijatým záznamům, zatímco dotazy nad tabulkou spuštěnou se slabou konzistencí nemusí mít přístup k některým záznamům z posledních několika minut.

Poznámka

Ve výchozím nastavení se dotazy spouští se silnou konzistencí. Doporučujeme přepnout na slabou konzistenci pouze v případě potřeby kvůli podpoře vyšší souběžnosti dotazů.

Případy použití pro silnou konzistenci

Pokud máte silnou závislost na aktualizacích, ke kterým došlo v databázi během několika posledních minut, použijte silnou konzistenci.

Následující dotaz například spočítá počet záznamů o chybách za 5 minut a aktivuje výstrahu, která je větší než 0. K tomuto případu použití je nejvhodnější použít silnou konzistenci, protože vaše přehledy můžou být změněné, protože nemáte přístup k záznamům přijatým během posledních několika minut, jak tomu může být v případě slabé konzistence.

my_table
| where timestamp between(ago(5m)..now())
| where level == "error"
| count

Kromě toho by se měla používat silná konzistence, pokud jsou metadata databáze velká. Například. databáze má miliony datových rozsahů . Použití slabé konzistence by vedlo ke stahování a deserializaci rozsáhlých artefaktů metadat z trvalého úložiště, což může zvýšit pravděpodobnost přechodných selhání při stahování a souvisejících operacích.

Případy použití pro slabou konzistenci

Pokud nemáte silnou závislost na aktualizacích, ke kterým došlo v databázi během posledních několika minut, a potřebujete vysokou souběžnost dotazů, použijte slabou konzistenci.

Následující dotaz například spočítá počet záznamů o chybách za týden za posledních 90 dnů. V tomto případě je vhodná slabá konzistence, protože je nepravděpodobné, že by vaše přehledy ovlivnily záznamy ingestované během posledních několika minut, nebudou vynechány.

my_table
| where timestamp between(ago(90d) .. now())
| where level == "error"
| summarize count() by level, startofweek(Timestamp)

Slabé režimy konzistence

Následující tabulka shrnuje čtyři režimy slabé konzistence dotazů.

Mode Description
Náhodné Dotazy se náhodně směrují do jednoho z uzlů v clusteru, který může sloužit jako slabě konzistentní hlavička dotazů.
Spřažení podle databáze Dotazy v rámci stejné databáze se směrují do stejného slabě konzistentního hlavičky dotazů, což zajišťuje konzistentní provádění této databáze.
Spřažení podle textu dotazu Dotazy se stejnou hodnotou hash textu dotazu se směrují do stejného slabě konzistentního hlavičky dotazů, což je výhodné pro ukládání dotazů do mezipaměti.
Spřažení podle ID relace Dotazy se stejnou hodnotou hash ID relace se směrují do stejného slabě konzistentního hlavičky dotazu, což zajišťuje konzistentní provádění v rámci relace.

Spřažení podle databáze

Spřažení podle režimu databáze zajišťuje, že se dotazy spuštěné vůči stejné databázi spustí pro stejnou verzi databáze, i když ne nutně nejnovější verzi databáze. Tento režim je užitečný, když je důležité zajistit konzistentní spouštění v rámci konkrétní databáze. Nicméně. Počet dotazů napříč databázemi je nevyvážený, takže tento režim může vést k nerovnoměrné distribuci zatížení.

Spřažení podle textu dotazu

Spřažení podle režimu textu dotazu je výhodné, když dotazy využívají mezipaměť výsledků dotazu. Tento režim směruje opakující se dotazy často spouštěné stejnou identitou na stejnou hlavičku dotazů, což jim umožňuje využívat výhod výsledků uložených v mezipaměti a snižuje zatížení clusteru.

Spřažení podle ID relace

Spřažení podle režimu ID relace zajišťuje, že se dotazy patřící do stejné uživatelské aktivity nebo relace spustí pro stejnou verzi databáze, i když ne nutně nejnovější. Pokud chcete použít tento režim, musí být ID relace explicitně zadáno ve vlastnostech požadavků klienta každého dotazu. Tento režim je užitečný ve scénářích, kde je nezbytné konzistentní provádění v rámci relace.

Určení konzistence dotazů

Režim konzistence dotazů můžete určit klientem odesílajícím požadavek nebo pomocí zásad na straně serveru. Pokud ho ani jeden nezadá, použije se výchozí režim silné konzistence.

  • Klient odesílající požadavek: Použijte queryconsistencyvlastnost žádosti klienta. Tato metoda nastaví režim konzistence dotazů pro konkrétní dotaz a nemá vliv na celkový efektivní režim konzistence, který je určen výchozí zásadou nebo zásadou na straně serveru. Další informace najdete v tématu Vlastnosti požadavku klienta.

  • Zásady na straně serveru: Použijte QueryConsistency vlastnost zásady konzistence dotazů. Tato metoda nastaví režim konzistence dotazů na úrovni skupiny úloh, což eliminuje potřebu uživatelů zadávat režim konzistence ve vlastnostech požadavků klienta a umožňuje vynucovat požadované režimy konzistence. Další informace najdete v tématu Zásady konzistence dotazů.

Poznámka

Pokud používáte sadu Kusto .NET SDK, můžete nastavit konzistenci dotazů prostřednictvím připojovací řetězec. Toto nastavení bude platit pro všechny dotazy odeslané prostřednictvím tohoto konkrétního připojovací řetězec. Další informace najdete v tématu Vlastnosti připojovacího řetězce.