PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl
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ě?
K nastavení vlastnosti enablePerRegionPerPartitionAutoscale
na hodnotu True můžete použít šablonu Resource Manageru s verzí 2023-11-15-preview
rozhraní API nebo novější verzí Preview. Tuto vlastnost můžete zobrazit v zobrazení JSON pomocí verze Preview verze 2023-11-15-preview nebo novější verze Preview.
Můžete také použít Azure CLI nebo PowerShell.
// Add Azure Cosmos DB extension 2.0.6-preview for PowerShell
Install-Module -Name Az.CosmosDB -RequiredVersion 2.0.6-preview -AllowPrerelease -AllowClobber -Force
// 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>"
Co se stane s databázemi nebo kontejnery vytvořenými v dřívějším modelu vrstvy Autopilot?
Prostředky vytvořené v modelu starší vrstvy se automaticky podporují v novém vlastním modelu automatického škálování s maximálním počtem 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í uvedené 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 automatického škálování, měli byste celkově zakoupit 15 000 RU/s rezervované kapacity.
Rezervovaná kapacita pro více oblastí zápisu funguje stejně pro zřízenou propustnost automatického škálování a standardní (ruční). 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?
Zjistěte, jak povolit automatické škálování.
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 k těmto operacím použít Azure Portal, Azure CLI nebo PowerShell . Záměrně nemůžete použít klientské sady SDK služby Azure Cosmos DB ani šablonu Azure Resource Manageru 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 POČET RU/s tak, aby vyhovovaly vaší úloze.
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 automatického škálování:
MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10)
zaokrouhlí na nejbližší hodnotu 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í ručně zřízená propustnost se rovná aktuálnímu maximálnímu počtu RU/s automatického š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ů propustnosti, zvažte použití skriptu Azure CLI – Převod na automatické škálování.
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ždou maximální počet RU/s je maximální počet RU/s databáze nebo kontejneru vydělený 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 zřídit 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 Tmax
v 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 × Tmax
0,1 a Tmax
až do doby, než bude připraven nový rozsah škálování 0,1 × Tmax_new
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 minimální maximální počet RU/s automatického škálování, které můžete nastavit. Jsou oddělené od 0,1 × Tmax
rozsahu 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 hodnota TTL u automatického škálování?
Operace TTL (Time to Live) nemají vliv na škálování RU/s v automatickém škálování. 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 na 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: Hodnota TTL je povolená.
- 1. hodina: T=2: Kontejner začne získávat požadavky. Žádosti spotřebovávají 1 000 RU/s za 1 sekundu. Používá se hodnota TTL 200 RU/s. Fakturovatelné RU/s jsou stále 1 000 RU/s. Bez ohledu na to, kdy dojde k odstranění hodnoty TTL, nemají vliv na logiku automatického škálování škálování.
Jak se maximální počet RU/s vztahuje k fyzickým oddílům?
Když poprvé vyberete maximální počet RU/s, azure Cosmos DB zřídí rozdělením maximálního počtu RU/s o 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 omezení více než 100 procent normalizovaného využití 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.
Poznámka:
Klientské sady SDK služby Azure Cosmos DB a nástroje pro import dat (knihovna Bulk Executor) se po vrácení chyby 429 automaticky opakují, takže občasné chyby kódu 429 nejsou problematické. Trvalý vysoký počet chyb s kódem 429 může znamenat, že potřebujete zvýšit maximální počet RU/s nebo zkontrolovat strategii dělení tak, aby zahrnovala horký oddíl.
Může při povoleném automatickém škálování dojít k chybám omezování šířky pásma nebo rychlosti?
Ano. Ve dvou scénářích je možné zobrazit chyby s kódem 429.
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 oddílu, například v horkém oddílu, může základní fyzický oddíl překročit rozpočet 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í.
Když používáte automatické škálování, dochází k chybám s kódem 429, nemusí nutně značí problém s databází nebo kontejnerem. Obecně platí, že pokud mezi 1 a 5 procenty požadavků jsou chyby s kódem 429 a celková latence přijatelná, jsou chyby v pořádku, že ru/s se plně využívá. Není vyžadována žádná akce.
Zjistěte, jak interpretovat a ladit kód 429 omezování rychlosti chyb.
Může mít normovaná spotřeba RU/s hodnotu 100 procent, pokud automatické škálování neškáluje na maximální počet RU/s?
Ano. Další informace najdete v tématu Monitorování normalizovaných RU/s.
Další kroky
- Zjistěte, jak povolit automatické škálování v databázi nebo kontejneru Azure Cosmos DB.
- Seznamte se s výhodami zřízené propustnosti pomocí automatického škálování.
- Přečtěte si další informace o logických a fyzických oddílech.