DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
Usługa Azure Cosmos DB używa aprowizowanej przepływności autoskalowania w celu automatycznego zarządzania jednostkami żądań na sekundę (RU/s) bazy danych lub kontenera na podstawie użycia. Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące automatycznego skalowania w usłudze Azure Cosmos DB.
Jaka jest różnica między autoskalowaniem a dynamicznym autoskalowaniem w usłudze Azure Cosmos DB?
Skalowanie automatyczne lub automatyczne skalowanie aprowizowanej przepływności skaluje obciążenia na podstawie najbardziej aktywnego regionu i partycji. Z kolei dynamiczne autoskalowanie umożliwia niezależne skalowanie regionów i partycji obciążeń na podstawie użycia. Zalecamy dynamiczne skalowanie automatyczne dla wszystkich klientów, którzy planują korzystać z autoskalowania.
Jak programowo włączyć dynamiczne autoskalowania na koncie?
Możesz użyć szablonu usługi Resource Manager z wersją 2023-11-15-preview
interfejsu API lub nowszą wersją zapoznawcza, aby ustawić właściwość enablePerRegionPerPartitionAutoscale
na true. Tę właściwość można wyświetlić w widoku JSON przy użyciu wersji zapoznawczej 2023-11-15-preview lub nowszej wersji zapoznawczej.
Możesz również użyć interfejsu wiersza polecenia platformy Azure lub programu 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 się stanie z bazami danych lub kontenerami utworzonymi we wcześniejszym modelu warstwy rozwiązania Autopilot?
Zasoby utworzone we wcześniejszym modelu warstwy są automatycznie obsługiwane w nowym modelu maksymalnej liczby jednostek RU/s niestandardowego skalowania automatycznego. Górna granica warstwy staje się nową maksymalną wartością RU/s, co skutkuje tym samym zakresem skalowania.
Jeśli na przykład wcześniej wybrano warstwę, która została przeskalowana między 400 RU/s i 4000 RU/s, baza danych lub kontener wyświetla teraz maksymalną wartość RU/s wynoszącą 4000 RU/s, która skaluje się między 400 RU/s i 4000 RU/s. Następnie możesz zmienić maksymalną wartość RU/s na wartość niestandardową na podstawie obciążenia.
Jaki jest punkt wejścia RU/s dla autoskalowanie?
Począwszy od kwietnia 2022 r., można ustawić automatyczne skalowanie z maksymalną wartością RU/s tak małą, jak 1000 RU/s (skaluje się między 100 RU/s i 1000 RU/s). Można również ustawić zakres skalowania 200 RU/s na 2000 RU/s lub 300 RU/s na 3000 RU/s. Wcześniej punkt wejścia wynosił 400 RU/s do 4000 RU/s.
Zalecamy tę konfigurację dla obciążeń, które mają wymagania dotyczące niskiej przepływności, ale które nadal mogą być skalowane do maksymalnej liczby jednostek RU/s.
Jak szybko skalowanie automatyczne jest skalowane w górę w oparciu o wzrost ruchu?
W przypadku automatycznego skalowania system skaluje przepływność (RU/s) T
w górę lub T
w dół w zakresie 0,1 × Tmax
na Tmax
podstawie ruchu przychodzącego. Ponieważ skalowanie jest automatyczne i natychmiastowe, w dowolnym momencie można zużyć do aprowizowania Tmax
bez opóźnień.
Jak mogę określić, do jakiej wartości RU/s jest obecnie wyskalowany system?
Użyj metryk usługi Azure Monitor, aby monitorować maksymalną liczbę jednostek RU/s aprowizowanego automatycznego skalowania oraz bieżącą przepływność (RU/s), do których jest skalowany system.
Jakie są ceny skalowania automatycznego?
Za każdą godzinę są naliczane opłaty za najwyższą przepływność T
systemu skalowaną do tej godziny. Jeśli zasób nie miał żądań w ciągu godziny lub nie został przeskalowany poza 0,1 × Tmax
, opłaty są naliczane za co najmniej 0,1 × Tmax
. Aby uzyskać szczegółowe informacje, zobacz stronę cennika usługi Azure Cosmos DB.
Jak wygląda autoskalowanie w moich rozliczeniach?
W przypadku kont regionów pojedynczego zapisu szybkość skalowania automatycznego na 100 RU/s wynosi 1,5 razy więcej niż standardowa (ręczna) aprowizowana przepływność. Na rachunku jest wyświetlany istniejący standardowy miernik aprowizowanej przepływności. Ilość tego miernika jest mnożona przez 1,5. Jeśli na przykład najwyższa liczba JEDNOSTEK RU/s, która została przeskalowana do w ciągu godziny, wynosi 6000 RU/s, opłaty są naliczane 60 × 1,5 = 90 jednostek miernika dla tej godziny.
Na kontach, które mają regiony wielokrotnego zapisu, szybkość skalowania automatycznego na 100 RU/s jest taka sama jak szybkość dla standardowej (ręcznej) aprowizowanej przepływności w wielu regionach zapisu. Rachunek pokazuje istniejący miernik regionów wielokrotnego zapisu. Ponieważ stawki są takie same, jeśli używasz autoskalowania, zobaczysz taką samą ilość jak w przypadku standardowej przepływności.
Czy autoskalowanie działa z pojemnością zarezerwowaną?
Tak. W przypadku pojemności zarezerwowanej dla kont z regionami pojedynczego zapisu rabat za rezerwację dla zasobów autoskalowania jest stosowany do użycia miernika w stosunku do 1,5 razy więcej niż w danym regionie. Jeśli na przykład chcesz użyć pojemności zarezerwowanej do pokrycia 10 000 jednostek RU/s skalowania automatycznego, należy zaplanować zakup 15 000 RU/s ogólnej pojemności zarezerwowanej.
Pojemność zarezerwowana w regionie z obsługą wielu zapisów działa tak samo w przypadku automatycznego skalowania i standardowej (ręcznej) aprowizowanej przepływności. Aby uzyskać więcej informacji, zobacz Pojemność zarezerwowana usługi Azure Cosmos DB.
Czy skalowanie automatyczne działa z warstwą bezpłatną usługi Azure Cosmos DB?
Tak. W warstwie Bezpłatna możesz użyć przepływności autoskalowania w bazie danych lub w kontenerze. Dowiedz się więcej o tym, jak działa rozliczenia w warstwie Bezpłatna z autoskalowaniem.
Czy autoskalowanie jest obsługiwane w przypadku wszystkich interfejsów API?
Tak. Skalowanie automatyczne jest obsługiwane dla wszystkich interfejsów API: NoSQL, Gremlin, Table, Cassandra i MongoDB.
Czy autoskalowanie jest obsługiwane w przypadku kont zapisu w wielu regionach?
Tak. Maksymalna liczba jednostek RU/s jest dostępna w każdym regionie dodanym do konta usługi Azure Cosmos DB.
Jak mogę włączyć autoskalowanie w nowych bazach danych lub kontenerach?
Dowiedz się, jak włączyć autoskalowanie.
Czy mogę włączyć skalowanie automatyczne w istniejącej bazie danych lub kontenerze?
Tak. Możesz również przełączać się między aprowizowaną przepływnością autoskalowania i standardową (ręczną). Obecnie dla wszystkich interfejsów API można użyć witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu PowerShell , aby wykonać te operacje. Zgodnie z projektem nie można używać zestawów SDK klienta usługi Azure Cosmos DB ani szablonu usługi Azure Resource Manager do migrowania między ręcznie aprowizowaną przepływnością i skalowaniem automatycznym. Można jednak użyć zestawów SDK klienta lub szablonu usługi Azure Resource Manager, aby utworzyć nowe zasoby skalowania automatycznego i zmienić maksymalną liczbę jednostek RU/s w istniejącym zasobie autoskalowania.
Jak działa migracja między autoskalowaniem a standardowo (ręcznie) aprowizowaną przepływnością?
Koncepcyjnie zmiana typu przepływności jest procesem dwuetapowym. Najpierw należy wysłać żądanie zmiany ustawień przepływności w celu użycia automatycznego skalowania lub ręcznej aprowizowanej przepływności. W obu przypadkach system automatycznie określa i ustawia początkową wartość RU/s na podstawie bieżących ustawień przepływności i magazynu. W tym kroku nie jest akceptowana żadna wartość RU/s podana przez użytkownika. Następnie po zakończeniu aktualizacji można zmienić ru/s , aby uwzględnić obciążenie.
Migrowanie ze standardowej (ręcznej) aprowizowanej przepływności do skalowania automatycznego
W przypadku kontenera użyj następującej formuły, aby oszacować początkową maksymalną wartość RU/s autoskalowania:
MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10)
zaokrąglone do najbliższej 1000 RU/s.
Rzeczywista początkowa maksymalna wartość RU/s skalowania początkowego może się różnić w zależności od konfiguracji konta.
Przykład nr 1: Masz kontener, który ma 10 000 RU/s ręcznie aprowizowanej przepływności i 25 GB miejsca do magazynowania. Po włączeniu automatycznego skalowania początkowa maksymalna wartość RU/s to 10 000 RU/s, która może być skalowana między 1000 RU/s a 10 000 RU/s.
Przykład nr 2: Masz kontener, który ma 50 000 RU/s przepływności aprowizowanej ręcznie i 25 000 GB miejsca do magazynowania. Po włączeniu automatycznego skalowania początkowa maksymalna wartość RU/s to 250 000 RU/s, która może być skalowana między 25 000 RU/s a 250 000 RU/s.
Migrowanie z autoskalowania do standardowej (ręcznej) aprowizowanej przepływności
Początkowa aprowizowana ręcznie przepływność jest równa bieżącej maksymalnej wartości RU/s autoskalowania.
Przykład: masz bazę danych lub kontener autoskalowania, który ma maksymalną wartość RU/s wynoszącą 20 000 RU/s (skaluje się między 2000 RU/s i 20 000 RU/s). Podczas aktualizacji w celu użycia przepływności aprowizowanej ręcznie początkowa przepływność wynosi 20 000 RU/s.
Jeśli musisz przeprowadzić migrację dużej liczby zasobów przepływności, rozważ użycie skryptu interfejsu wiersza polecenia platformy Azure — konwertowanie na skalowanie automatyczne.
Czy mogę zarządzać bazami danych lub kontenerami z autoskalowaniem przy użyciu interfejsu wiersza polecenia platformy Azure, programu PowerShell lub usługi Azure Resource Manager?
Tak. Aby programowo włączyć skalowanie automatyczne w istniejącej bazie danych lub kontenerze, możesz użyć interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
Aby utworzyć nową bazę danych lub kontener używający autoskalowania, możesz użyć interfejsu wiersza polecenia platformy Azure, programu PowerShell lub szablonu usługi Azure Resource Manager.
Czy autoskalowanie jest obsługiwane w przypadku baz danych z udostępnioną przepływnością?
Tak. Aby włączyć skalowanie automatyczne dla bazy danych z udostępnioną przepływnością, podczas tworzenia bazy danych wybierz opcję autoskalowania i aprowizuj przepływność .
Ile kontenerów jest dozwolonych na bazę danych z udostępnioną przepływnością po włączeniu autoskalowania?
Usługa Azure Cosmos DB wymusza maksymalnie 25 kontenerów w udostępnionej bazie danych przepływności. Maksymalna wartość dotyczy baz danych, które mają przepływność autoskalowania lub standardową (ręczną).
Jak autoskalowanie wpływa na poziom spójności bazy danych?
Autoskalowanie nie ma wpływu na poziom spójności bazy danych.
Aby uzyskać więcej informacji, zobacz Poziomy spójności.
Jaki limit magazynu jest skojarzony z poszczególnymi opcjami maksymalnej liczby jednostek RU/s?
Limit magazynu w GB dla każdej maksymalnej liczby jednostek RU/s to maksymalna liczba jednostek RU/s bazy danych lub kontenera podzielona przez 10. Jeśli na przykład maksymalna liczba jednostek RU/s wynosi 20 000 RU/s, zasób może obsługiwać 2000 GB miejsca do magazynowania.
Aby uzyskać dostęp do maksymalnej liczby jednostek RU/s i opcji magazynu, zobacz Aprowizowanie limitów automatycznego skalowania przepływności.
Co się stanie, jeśli przekroczono limit magazynu skojarzony z moją maksymalną przepływnością?
Jeśli przekroczono limit magazynu skojarzony z maksymalną przepływnością bazy danych lub kontenera, usługa Azure Cosmos DB automatycznie zwiększa maksymalną przepływność do następnego najwyższego ru/s, który może obsługiwać ten poziom magazynu.
W przykładowym scenariuszu, jeśli zaczniesz od maksymalnej wartości RU/s wynoszącej 50 000 RU/s (skaluje się między 5000 RU/s i 50 000 RU/s), możesz przechowywać maksymalnie 5000 GB danych. Jeśli rozmiar magazynu wzrośnie do 5001 GB, magazyn wynosi teraz 6000 GB, a nowa maksymalna wartość RU/s wynosi 60 000 RU/s (skaluje się między 6000 RU/s a 60 000 RU/s).
Czy mogę zmienić maksymalną liczbę jednostek RU/s w bazie danych lub kontenerze?
Tak. Aby uzyskać więcej informacji, zobacz Jak aprowizować przepływność autoskalowania.
Zmiana maksymalnej liczby jednostek RU/s w zależności od żądanej wartości może potrwać od 4 do 6 godzin. Dowiedz się więcej.
Jak zwiększyć maksymalną liczbę jednostek RU/s?
Po wysłaniu żądania zwiększenia maksymalnej liczby jednostek RU/s Tmax
w zależności od wybranej maksymalnej liczby jednostek RU/s usługa aprowizuje więcej zasobów w celu obsługi większej maksymalnej liczby jednostek RU/s. Chociaż tak się dzieje, istniejące obciążenie i operacje nie mają wpływu. System nadal skaluje bazę danych lub kontener między poprzednimi × 0,1 i Tmax
Tmax
do momentu, aż nowy zakres skalowania 0,1 × Tmax_new
będzie Tmax_new
gotowy.
Jak zmniejszyć maksymalną liczbę jednostek RU/s?
Po obniżeniu maksymalnej wartości RU/s minimalna wartość, którą można ustawić, jest MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10)
zaokrąglona do najbliższej 1000 RU/s.
Przykład nr 1: Masz kontener skalowania automatycznego, który ma maksymalną wartość RU/s wynoszącą 20 000 RU/s (skaluje się między 2000 RU/s i 20 000 RU/s) i 1500 GB miejsca do magazynowania. Najniższa, minimalna wartość, na którą można ustawić maksymalną wartość RU/s, to MAX(1,000, 20,000 / 10, 1,500 × 10)
= 15 000 RU/s (skaluje się między 1500 RU/s i 15 000 RU/s).
Przykład nr 2: Masz kontener autoskalowania, który ma maksymalną wartość RU/s wynoszącą 100 000 RU/s i 100 GB miejsca do magazynowania. Teraz można skalować maksymalną liczbę RU/s do 150 000 RU/s (skaluje się między 15 000 RU/s i 150 000 RU/s). Najniższa, minimalna wartość, na którą można teraz ustawić maksymalną wartość RU/s, wynosi MAX(1,000, 150,000 / 10, 100 × 10)
= 15 000 RU/s (skaluje się między 1500 RU/s i 15 000 RU/s).
W przypadku bazy danych z udostępnioną przepływnością, gdy zmniejszysz maksymalną wartość RU/s, minimalna wartość, którą można ustawić, zostanie MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10, 1,000 + (MAX(Container count - 25, 0) × 1,000))
zaokrąglona do najbliższej 1000 RU/s.
Te formuły i przykłady dotyczą minimalnej maksymalnej liczby jednostek RU/s, które można ustawić. Są one oddzielone od 0,1 × Tmax
do Tmax
zakresu, do którego system automatycznie skaluje. Niezależnie od maksymalnej liczby jednostek RU/s system zawsze skaluje się między 0,1 × Tmax
a Tmax
.
Jak działa czas wygaśnięcia z autoskalowaniem?
Operacje czasu wygaśnięcia (TTL) nie mają wpływu na skalowanie jednostek RU/s w autoskalowaniu. Wszystkie jednostki RU, które są używane z powodu czasu wygaśnięcia, nie są częścią rozliczanych jednostek RU/s kontenera autoskalowania.
Na przykład w przypadku kontenera skalowania automatycznego z 400 RU/s do 4000 RU/s:
- Godzina 1: T=0: Kontener nie ma użycia (bez żądań czasu wygaśnięcia lub obciążenia). Rozliczana wartość RU/s wynosi 400 RU/s.
- Godzina 1: T=1: włączono czas wygaśnięcia.
- Godzina 1: T=2: kontener zaczyna pobierać żądania. Żądania zużywają 1000 RU/s na 1 sekundę. Używane jest 200 RU/s czasu wygaśnięcia. Rozliczana wartość RU/s nadal wynosi 1000 RU/s. Niezależnie od tego, kiedy wystąpi usunięcie czasu wygaśnięcia, nie mają wpływu na logikę skalowania automatycznego.
Jak maksymalna liczba jednostek RU/s jest mapowana na partycje fizyczne?
Po pierwszym wybraniu maksymalnej liczby jednostek RU/s usługa Azure Cosmos DB aprowizuje maksymalną liczbę jednostek RU/s przez 10 000 RU/s, aby uzyskać wymaganą liczbę partycji fizycznych. Każda partycja fizyczna może obsługiwać maksymalnie 10 000 RU/s i 50 GB miejsca do magazynowania. W miarę zwiększania rozmiaru magazynu usługa Azure Cosmos DB automatycznie dzieli partycje, aby dodać więcej partycji fizycznych do obsługi wzrostu magazynu. Jeśli magazyn przekroczy skojarzony limit, usługa Azure Cosmos DB zwiększy maksymalną liczbę jednostek RU/s.
Maksymalna liczba jednostek RU/s bazy danych lub kontenera jest podzielona równomiernie we wszystkich partycjach fizycznych. Łączna przepływność, do jakiej można skalować dowolną partycję fizyczną, to maksymalna liczba jednostek RU/s bazy danych lub kontenera podzielona przez liczbę partycji fizycznych.
Co się dzieje, gdy żądania przychodzące przekraczają maksymalną liczbę jednostek RU/s bazy danych lub kontenera?
Jeśli ogólna liczba jednostek RU/s przekracza maksymalną liczbę jednostek RU/s bazy danych lub kontenera, żądania przekraczające maksymalną liczbę jednostek RU/s są ograniczane i zwracają stan kodu 429. Żądania, które powodują ponad 100 procent znormalizowanego wykorzystania, są ograniczane. Znormalizowane wykorzystanie jest definiowane jako maksymalne wykorzystanie jednostek RU/s we wszystkich partycjach fizycznych.
Na przykład maksymalna przepływność wynosi 20 000 RU/s i masz dwie partycje fizyczne, P_1 i P_2. Każda partycja może skalować do 10 000 RU/s. W każdej sekundzie, jeśli P_1 używane 6000 jednostek RU i P_2 używane 8000 jednostek RU, znormalizowane wykorzystanie wynosi MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU)
= 0,8.
Uwaga
Zestawy SDK klienta usługi Azure Cosmos DB i narzędzia do importowania danych (Azure Data Factory, biblioteka funkcji wykonawczej operacji zbiorczych) są automatycznie ponawiane po zwracaniu kodu 429, więc sporadyczne błędy kodu 429 nie są problematyczne. Utrzymująca się duża liczba błędów kodu 429 może wskazywać na konieczność zwiększenia maksymalnej liczby jednostek RU/s lub przejrzenia strategii partycjonowania w celu uwzględnienia gorącej partycji.
Czy błędy ograniczania przepustowości lub ograniczania szybkości mogą wystąpić po włączeniu autoskalowania?
Tak. W dwóch scenariuszach można zobaczyć błędy kodu 429.
Po pierwsze, gdy ogólna liczba jednostek RU/s przekracza maksymalną liczbę jednostek RU/s bazy danych lub kontenera, usługa ogranicza odpowiednio żądania.
Po drugie, jeśli wartość klucza partycji logicznej ma nieproporcjonalnie wyższą liczbę żądań w porównaniu z innymi wartościami klucza partycji, takimi jak w gorącej partycji, podstawowa partycja fizyczna może przekroczyć budżet jednostek RU/s. Najlepszym rozwiązaniem, aby uniknąć gorących partycji, jest wybranie właściwego klucza partycji, który zapewni równomierny rozkład magazynowania i przepływności.
Jeśli na przykład wybierzesz opcję 20 000 RU/s maksymalnej przepływności i masz 200 GB miejsca do magazynowania, jeśli masz cztery partycje fizyczne, każda partycja fizyczna może być automatycznie skalowana do 5000 RU/s. Jeśli gorąca partycja znajduje się na określonym kluczu partycji logicznej, zobaczysz błędy kodu 429, gdy podstawowa partycja fizyczna, w której się znajduje, przekracza 5000 RU/s lub 100 procent znormalizowanego wykorzystania.
Podczas korzystania z automatycznego skalowania występują błędy kodu 429 niekoniecznie wskazują problem z bazą danych lub kontenerem. Ogólnie w przypadku obciążenia produkcyjnego, jeśli od 1 procent do 5 procent żądań występują błędy kodu 429, a opóźnienie końcowe jest akceptowalne, błędy są znakiem dobrej kondycji, że ru/s są w pełni wykorzystywane. Nie trzeba podejmować żadnych działań.
Dowiedz się, jak interpretować i debugować błędy ograniczania szybkości kodu 429.
Czy znormalizowane użycie jednostek RU/s może wynosić 100 procent, jeśli autoskalowanie nie jest skalowane do maksymalnej liczby jednostek RU/s?
Tak. Aby uzyskać więcej informacji, zobacz Monitorowanie znormalizowanych jednostek RU/s.
Następne kroki
- Dowiedz się, jak włączyć skalowanie automatyczne w bazie danych lub kontenerze usługi Azure Cosmos DB.
- Dowiedz się więcej o zaletach aprowizowanej przepływności przy użyciu autoskalowania.
- Dowiedz się więcej o partycjach logicznych i fizycznych.