Nejčastější dotazy týkající se propustnosti automatického škálování ve službě Azure Cosmos DB

Azure Cosmos DB využívá zřízenou propustnost automatického škálování k automatické správě a škálování jednotek žádostí za sekundu (RU/s) vaší databáze nebo kontejneru na základě využití. Tento článek odpovídá na nejčastější dotazy týkající se automatického škálování ve službě Azure Cosmos DB.

Jaký je rozdíl mezi automatickým škálováním a dynamickým automatickým škálováním ve službě Azure Cosmos DB?

Automatické škálování nebo automatické škálování zřízené propustnosti škáluje úlohy na základě nejaktivnější oblasti a oddílu. Dynamické automatické škálování naproti tomu umožňuje škálování oblastí a oddílů úloh nezávisle na využití. Dynamické automatické škálování doporučujeme všem zákazníkům, kteří plánují automatické škálování používat.

Jak můžu u účtu povolit dynamické automatické škálování programově?

Pomocí šablony Resource Manager s verzí preview nebo vyšší a stabilní verzi nebo vyšší můžete nastavit vlastnost na hodnotu true. Pomocí verze rozhraní REST API poskytovatele prostředků 2024-11-15 nebo novější můžete nastavit enablePerRegionPerPartitionAutoscale na hodnotu true.
Můžete také použít Azure CLI nebo PowerShell.

// Add Azure Cosmos DB extension 1.18.0 or later for PowerShell
Install-Module -Name Az.CosmosDB -RequiredVersion 1.18.0

// update the account using this command to enable or disable the property
Update-AzCosmosDBAccount -EnablePerRegionPerPartitionAutoscale $true -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"

// Run this command to see the enablement or disablement status:
Get-AzCosmosDBAccount -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"

Může normalizovaná spotřeba RU/s být 100 % i v případě, že se metriky ZŘÍZENÉ propustnosti nebo automatického škálování RU neškálí na maximální počet RU/s?

Ano. Další informace najdete v Monitor normalized RU/s.

Jakou metriku byste měli použít k určení, zda se může programově zvýšit nebo snížit maximální počet žádostí za sekundu (RU/s) při automatickém škálování nebo ručně zřízených RU/s?

Ke správě RU/s pro váš prostředek doporučujeme využít nativní funkce dynamického škálování služby Azure Cosmos DB. V případě potřeby byste ale měli použít metriku Normalizovaná spotřeba RU ve službě Azure Monitor k rozhodování o programovém škálování. Metrika Normalizovaná spotřeba RU je metrika mezi 0 % a 100 %, která slouží k měření využití maximálního počtu RU/s automatického škálování nebo ručně zřízené propustnosti v databázi nebo kontejneru. Je to nejpřesnější způsob, jak určit, jestli je možné vertikálně navýšit nebo snížit kapacitu. Jiné přístupy, jako je použití volání ReadThroughputAsync() v sadách SDK služby Azure Cosmos DB k získání provisionedThroughputu nebo použití provisionedThroughput ve službě Azure Monitor, se nedoporučuje a povede k nepřesným výsledkům. Tyto metriky představují fakturovanou propustnost se zpožděním a neměly by se používat pro rozhodování o škálování.

Jak interpretovat ProvisionedThroughput v dynamickém a statickém automatickém škálování?

Zřízenou propustnost můžete použít k zobrazení RU/s, které se vám účtují za každou hodinu.

V dynamickém automatickém škálování se metriky zřízené propustnosti Azure Monitor a různé, níže uvedené metriky rozhraní API sady SDK odrážejí agregovaný nejvyšší počet RU/s škálovaný na hodinovou úroveň v rámci jednotlivých oddílů a oblastí.

V automatickém škálování metrika zřízené propustnosti služby Azure Monitor a různé metriky rozhraní API sady SDK uvedené níže odrážejí RU/s nejaktivnějšího oddílu, rovnoměrně aplikovaného napříč všemi oddíly a oblastmi, agregované za hodinu.

Typ sady SDK Zřízená propustnost reprezentovaná
.NET V3 Container.ReadThroughputAsync()

Container.ReadThroughputAsync(requestOptions).Resource.Throughput
Java V4 cosmosContainer.readThroughput().getProperties().getManualThroughput()
Python azure.cosmos.throughputproperties.offer_throughput
Node.js azure.cosmos.OfferDefinition.offerThroughput

Co se stane s databázemi nebo kontejnery vytvořenými v dřívějším modelu vrstvy Autopilot?

Prostředky vytvořené ve starším modelu vrstvy jsou automaticky podporovány v novém modelu maximálního vlastního automatického škálování RU/s. Horní mez vrstvy se stane novým maximálním počtem RU/s, což vede ke stejnému rozsahu škálování.

Pokud jste například předtím vybrali úroveň, která se škálovala mezi 400 RU/s a 4 000 RU/s, zobrazí se v databázi nebo kontejneru maximální počet RU/s 4 000 RU/s, který se škáluje mezi 400 RU/s a 4 000 RU/s. Potom můžete na základě vaší úlohy změnit maximální počet RU/s na vlastní hodnotu.

Jaký je vstupní bod RU/s pro automatické škálování?

Od dubna 2022 můžete nastavit automatické škálování s maximálním počtem RU/s až 1 000 RU/s (škálování mezi 100 RU/s a 1 000 RU/s). Můžete také nastavit rozsah škálování 200 RU/s na 2 000 RU/s nebo 300 RU/s na 3 000 RU/s. Dříve byl vstupní bod 400 RU/s až 4 000 RU/s.

Tuto konfiguraci doporučujeme pro úlohy, které mají nízké požadavky na propustnost, ale stále se můžou škálovat na maximální počet RU/s.

Jak rychle se škálování automaticky škáluje na základě nárůstu provozu?

Při automatickém škálování systém škáluje propustnost (RU/s) T nahoru nebo T dolů v rozsahu 0,1 × Tmax na Tmax základě příchozího provozu. Vzhledem k tomu, že škálování je automatické a okamžité, v libovolném okamžiku můžete spotřebovávat až do zřízeného Tmax stavu bez zpoždění.

Jak zjistím, na jaký počet RU/s je systém aktuálně škálovaný?

Metriky služby Azure Monitor slouží k monitorování zřízeného maximálního počtu RU/s i aktuální propustnosti (RU/s), na které se systém škáluje.

Jaké jsou ceny automatického škálování?

Každou hodinu se vám účtuje nejvyšší propustnost T , na kterou se systém škáloval během této hodiny. Pokud váš prostředek neměl během hodiny žádné požadavky nebo neškáli na více než 0,1 × Tmax, účtuje se vám minimálně 0,1 × Tmax. Podrobnosti najdete na stránce s cenami služby Azure Cosmos DB.

Jak je automatické škálování zobrazeno na faktuře?

V účtech oblasti s jedním zápisem je rychlost automatického škálování na 100 RU/s 1,5krát vyšší než standardní (ruční) zřízená propustnost. Na faktuře se zobrazuje stávající standardní zřízený měřič propustnosti. Množství tohoto měřiče se vynásobí 1,5. Pokud například nejvyšší počet RU/s, na který se systém škáloval v rámci jedné hodiny, bylo 6 000 RU/s, účtuje se vám 60 × 1,5 = 90 jednotek měřiče za danou hodinu.

V účtech s více oblastmi zápisu je rychlost automatického škálování na 100 RU/s stejná jako sazba pro standardní (ruční) zřízenou propustnost více oblastí zápisu. Na faktuře se zobrazuje měřič oblastí pro více zápisů. Vzhledem k tomu, že sazby jsou stejné, pokud používáte automatické škálování, zobrazí se stejné množství jako u standardní propustnosti.

Funguje automatické škálování s rezervovanou kapacitou?

Ano. S rezervovanou kapacitou pro účty s oblastmi s jedním zápisem se sleva za rezervaci prostředků automatického škálování uplatňuje na využití měřiče v poměru 1,5násobku poměru konkrétní oblasti. Pokud například chcete použít rezervovanou kapacitu k pokrytí 10 000 RU/s pro automatické škálování, měli byste celkově naplánovat zakoupení rezervované kapacity ve výši 15 000 RU/s.

Rezervovaná kapacita pro vícezápisové oblasti funguje stejně pro automatické škálování a standardní (ruční) zřízenou propustnost. Další informace najdete v tématu Rezervovaná kapacita služby Azure Cosmos DB.

Funguje automatické škálování s úrovní Free služby Azure Cosmos DB?

Ano. Na úrovni Free můžete propustnost automatického škálování použít pro databázi nebo kontejner. Přečtěte si další informace o tom, jak funguje fakturace úrovně Free s automatickým škálováním.

Podporuje se automatické škálování pro všechna rozhraní API?

Ano. Automatické škálování se podporuje pro všechna rozhraní API: NoSQL, Gremlin, Table, Cassandra a MongoDB.

Podporuje se automatické škálování pro účty pro zápis do více oblastí?

Ano. Maximální počet RU/s je k dispozici v každé oblasti, kterou přidáte do účtu služby Azure Cosmos DB.

Jak můžu povolit automatické škálování pro nové databáze nebo kontejnery?

Můžu povolit automatické škálování u existující databáze nebo kontejneru?

Ano. Můžete také přepínat mezi automatickým škálováním a standardní (ruční) zřízenou propustností. V současné době můžete pro všechna rozhraní API k těmto operacím použít Azure Portal, Azure CLI, PowerShell nebo některou ze sad SDK pro správu Azure. Klientské sady SDK služby Azure Cosmos DB ani šablonu Azure Resource Manageru nemůžete použít k migraci mezi ruční zřízenou propustností a automatickým škálováním. Klientské sady SDK nebo šablonu Azure Resource Manageru ale můžete použít k vytvoření nových prostředků automatického škálování a ke změně maximálního počtu RU/s u existujícího prostředku automatického škálování.

Jak funguje migrace mezi automatickým škálováním a standardní (ručně) zřízenou propustností?

Koncepční změna typu propustnosti je dvoufázový proces. Nejprve odešlete žádost o změnu nastavení propustnosti tak, aby používala automatické škálování nebo ruční zřízenou propustnost. V obou případech systém automaticky určí a nastaví počáteční hodnotu RU/s na základě aktuálního nastavení propustnosti a úložiště. Během tohoto kroku není přijata žádná uživatelsky poskytnutá hodnota RU/s. Po dokončení aktualizace pak můžete změnit RU/s tak, aby vyhovovaly vašemu pracovnímu zatížení.

Migrace ze standardní (ruční) zřízené propustnosti na automatické škálování

Pro kontejner použijte následující vzorec k odhadu počátečního maximálního počtu RU/s pro automatické nastavení škálování:

MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10) se zaokrouhluje na nejbližších 1 000 RU/s.

Skutečné počáteční maximální počet RU/s automatického škálování se může lišit v závislosti na konfiguraci vašeho účtu.

Příklad č. 1: Máte kontejner, který má 10 000 RU/s ručně zřízenou propustnost a 25 GB úložiště. Když povolíte automatické škálování, je počáteční maximální počet RU/s 10 000 RU/s, který se může škálovat mezi 1 000 RU/s a 10 000 RU/s.

Příklad č. 2: Máte kontejner s ručně zřízenou propustností 50 000 RU/s a 25 000 GB úložiště. Když povolíte automatické škálování, je počáteční maximální počet RU/s 250 000 RU/s, který se může škálovat mezi 25 000 RU/s a 250 000 RU/s.

Migrace z automatického škálování na standardní (ruční) zřízenou propustnost

Počáteční manuálně konfigurovaná propustnost se rovná maximální hodnotě RU/s při automatickém škálování.

Příklad: Máte databázi nebo kontejner automatického škálování, který má maximální počet RU/s 20 000 RU/s (škáluje se mezi 2 000 RU/s a 20 000 RU/s). Při aktualizaci na použití ruční zřízené propustnosti je počáteční propustnost 20 000 RU/s.

Pokud potřebujete migrovat velký počet prostředků s vysokou propustností, zvažte použití Azure CLI.

Dá se ke správě databází nebo kontejnerů, které využívají automatické škálování, použít Azure CLI, PowerShell nebo Azure Resource Manager?

Ano. Pokud chcete povolit automatické škálování v existující databázi nebo kontejneru prostřednictvím kódu programu, můžete použít Azure CLI nebo PowerShell.

Pokud chcete vytvořit novou databázi nebo kontejner, který používá automatické škálování, můžete použít Azure CLI, PowerShell nebo šablonu Azure Resource Manageru.

Podporuje se automatické škálování pro databáze se sdílenou propustností?

Ano. Pokud chcete povolit automatické škálování pro databázi se sdílenou propustností, vyberte při vytváření databáze automatické škálování a možnost Zřídit propustnost .

Kolik kontejnerů je povoleno na jednu databázi se sdílenou propustností, když je povolené automatické škálování?

Azure Cosmos DB vynucuje v databázi se sdílenou propustností maximálně 25 kontejnerů. Maximální hodnota platí pro databáze, které mají automatickou nebo standardní (ruční) propustnost.

Jaký vliv má automatické škálování na úroveň konzistence databáze?

Automatické škálování nemá žádný vliv na úroveň konzistence databáze.

Další informace najdete v tématu Úrovně konzistence.

Jaký je limit úložiště přidružený k jednotlivým možnostem maximálního počtu RU/s?

Limit úložiště v GB pro každé maximální množství RU/s se vypočítá jako maximální množství RU/s databáze nebo kontejneru děleno 10. Pokud je například maximální počet RU/s 20 000 RU/s, může prostředek podporovat 2 000 GB úložiště.

Dostupné maximální počet RU/s a možnosti úložiště najdete v tématu Zřizování omezení automatického škálování propustnosti.

Co se stane, když překročím limit úložiště přidružený k maximální propustnosti?

Pokud dojde k překročení limitu úložiště přidruženého k maximální propustnosti databáze nebo kontejneru, Azure Cosmos DB automaticky zvýší maximální propustnost na další nejvyšší počet RU/s, které můžou tuto úroveň úložiště podporovat.

Pokud například začnete s maximálním počtem RU/s 50 000 RU/s (škáluje se mezi 5 000 RU/s a 50 000 RU/s), můžete uložit až 5 000 GB dat. Pokud se velikost úložiště zvýší na 5 001 GB, úložiště je teď 6 000 GB a nové maximum RU/s je 60 000 RU/s (škáluje se mezi 6 000 RU/s a 60 000 RU/s).

Můžu změnit maximální počet RU/s pro databázi nebo kontejner?

Ano. Další informace najdete v tématu Jak nakonfigurovat propustnost automatického škálování.

Když změníte maximální počet RU/s v závislosti na požadované hodnotě, může dokončení asynchronní operace trvat 4 až 6 hodin. Další informace.

Jak zvýšit maximální počet RU/s?

Když odešlete žádost o zvýšení maximálního počtu RU/s Tmaxv závislosti na maximálním počtu ru/s vybraných, služba zřídí více prostředků pro podporu vyššího maximálního počtu RU/s. I když k tomu dochází, vaše stávající úlohy a operace nejsou ovlivněné. Systém bude dál škálovat databázi nebo kontejner mezi předchozím 0,1 × Tmax a Tmax, dokud nebude připraven nový rozsah škálování 0,1 × Tmax_new až Tmax_new.

Jak snížit maximální počet RU/s?

Když snížíte maximální počet RU/s, minimální hodnota, kterou můžete nastavit, se zaokrouhlí na MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10) nejbližší 1 000 RU/s.

Příklad č. 1: Máte kontejner automatického škálování, který má maximální počet RU/s 20 000 RU/s (škáluje se mezi 2 000 RU/s a 20 000 RU/s) a 1 500 GB úložiště. Nejnižší minimální hodnota, na kterou můžete nastavit maximální počet RU/s, je MAX(1,000, 20,000 / 10, 1,500 × 10) = 15 000 RU/s (škáluje se mezi 1 500 RU/s a 15 000 RU/s).

Příklad č. 2: Máte kontejner automatického škálování, který má maximální počet RU/s 100 000 RU/s a 100 GB úložiště. Teď škálujete maximální počet RU/s až 150 000 RU/s (škáluje se mezi 15 000 RU/s a 150 000 RU/s). Nejnižší minimální hodnota, na kterou teď můžete nastavit maximální počet RU/s, je MAX(1,000, 150,000 / 10, 100 × 10) = 15 000 RU/s (škáluje se mezi 1 500 RU/s a 15 000 RU/s).

Pokud u databáze se sdílenou propustností snížíte maximální počet RU/s, minimální hodnota, kterou můžete nastavit na MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10, 1,000 + (MAX(Container count - 25, 0) × 1,000)) nejbližší 1 000 RU/s, se zaokrouhlí na nejbližší 1 000 RU/s.

Tyto vzorce a příklady platí pro nejnižší možné maximum RU/s, které můžete nastavit pro automatické škálování. Jsou oddělené od rozsahu 0,1 × Tmax až Tmax, na který se systém automaticky škáluje. Bez ohledu na maximální počet RU/s systém vždy škáluje mezi 0,1 × Tmax a Tmax.

Jak funguje mechanismus TTL v rámci automatického škálování?

Operace TTL (time to live) v automatickém škálování nemají vliv na škálování RU/s. Všechny ru, které se spotřebovávají kvůli hodnotě TTL, nejsou součástí fakturovaných RU/s kontejneru automatického škálování.

Například pro kontejner automatického škálování, který má 400 RU/s až 4 000 RU/s:

  • Hodina 1: T=0: Kontejner nemá žádné využití (žádná hodnota TTL ani požadavky na úlohy). Fakturovatelné RU/s je 400 RU/s.
  • Hodina 1: T=1: TTL je zapnuto.
  • 1. hodina: T=2: Kontejner začne získávat požadavky. Žádosti spotřebovávají 1 000 RU/s za 1 sekundu. Spotřeba TTL v hodnotě 200 RU/s. Fakturovatelná spotřeba RU/s je stále 1 000 RU/s. Bez ohledu na to, kdy dojde k odstranění TTL, nemají vliv na logiku automatického škálování.

Jak se maximální RU/s mapují na fyzické oddíly?

Když poprvé vyberete maximální počet RU/s, Azure Cosmos DB zřídí dělením maximálního počtu RU/s na 10 000 RU/s, abyste získali požadovaný počet fyzických oddílů. Každý fyzický oddíl může podporovat až 10 000 RU/s a 50 GB úložiště. S rostoucí velikostí úložiště služba Azure Cosmos DB automaticky rozdělí oddíly, aby se přidaly další fyzické oddíly, které zvládnou nárůst úložiště. Pokud úložiště překročí přidružený limit, Azure Cosmos DB zvýší maximální počet RU/s.

Maximální počet RU/s databáze nebo kontejneru se rovnoměrně rozdělí napříč všemi fyzickými oddíly. Celková propustnost, na kterou se může škálovat libovolný fyzický oddíl, je maximální počet RU/s databáze nebo kontejneru dělený počtem fyzických oddílů.

Co se stane, když příchozí požadavky překročí maximální počet RU/s databáze nebo kontejneru?

Pokud celkové spotřebované RU/s překročí maximální počet RU/s databáze nebo kontejneru, požadavky, které překročí maximální počet RU/s, se omezí a vrátí stav kódu 429. Požadavky, které vedou k normalizovanému využití přesahujícímu 100 procent, jsou omezeny. Normalizované využití se definuje jako maximální využití RU/s napříč všemi fyzickými oddíly.

Například maximální propustnost je 20 000 RU/s a máte dva fyzické oddíly, P_1 a P_2. Každý oddíl dokáže škálovat na 10 000 RU/s. Pokud P_1 v libovolné sekundě použil 6 000 RU a P_2 použil 8 000 RU, normalizované využití je MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU) = 0,8.

Note

Klientské sady SDK služby Azure Cosmos DB a nástroje pro import dat, jako jsou Azure Data Factory a knihovna Bulk Executor, automaticky opakují operace po vrácení chybového kódu 429, takže občasné chyby kódu 429 nejsou problematické. Trvalý vysoký počet chyb s kódem 429 může naznačovat, že potřebujete zvýšit maximální počet RU/s nebo upravit vaši strategii dělení, aby zahrnovala horkou partici.

Může při povoleném automatickém škálování dojít k chybám omezování šířky pásma nebo rychlosti?

Ano. Chyby s kódem 429 lze vidět ve dvou scénářích.

Za prvé, když celkové spotřebované RU/s překročí maximální počet RU/s databáze nebo kontejneru, služba odpovídajícím způsobem omezí požadavky.

Za druhé, pokud má hodnota klíče logického oddílu nepřiměřeně vyšší počet požadavků v porovnání s jinými hodnotami klíče logického oddílu, například v horkém oddílu, může základní fyzický oddíl překročit rozpočet Request Units za sekundu (RU/s). Pokud se chcete vyhnout horkým oddílům, doporučujeme zvolit vhodný klíč oddílu, který zajistí rovnoměrnou distribuci úložiště a propustnosti.

Pokud například vyberete možnost maximální propustnosti 20 000 RU/s a máte 200 GB úložiště, pokud máte čtyři fyzické oddíly, může být každý fyzický oddíl automaticky škálován až na 5 000 RU/s. Pokud je horký oddíl na konkrétním logickém klíči oddílu, zobrazí se chyby s kódem 429, pokud je základní fyzický oddíl, ve kterém se nachází, vyšší než 5 000 RU/s nebo 100 procent normalizované využití.

Pokud používáte automatické škálování a vidíte chyby s kódem 429, nemusí to nutně znamenat problém s vaší databází nebo kontejnerem. Obecně platí, že pokud mezi 1 % a 5 % požadavků dochází k chybám s kódem 429 a end-to-end latence je přijatelná, tyto chyby naznačují zdravé využití RU/s. Není vyžadována žádná akce.

Zjistěte, jak pochopit a odstraňovat chyby kódu 429 omezujícího přístup.