Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
NoSQL
MongoDB
Genom att slå samman partitioner i Azure Cosmos DB (förhandsversion) kan du minska antalet fysiska partitioner som används för din container på plats. Med sammanslagning kan containrar som är fragmenterade i dataflödet (har låg RU/s per partition) eller lagring (har låg lagring per partition) få sina fysiska partitioner omarbetade. Om en containers dataflöde har skalats upp och måste skalas ned igen kan sammanslagning hjälpa till att lösa problem med dataflödesfragmentering. För samma mängd etablerade RU/s innebär färre fysiska partitioner att varje fysisk partition får mer av den totala RU/s. Om du minimerar partitioner minskar risken för hastighetsbegränsning om en stor mängd data tas bort från en container och RU/s per partition är låg. Sammanslagning kan hjälpa till att rensa oanvända eller tomma partitioner, vilket effektivt löser problem med lagringsfragmentering.
Komma igång
Kom igång med partitionssammanslagning genom att gå till sidan Funktioner i ditt Azure Cosmos DB-konto. Välj och aktivera funktionen Partitionssammanslagning (förhandsversion).
Innan du aktiverar funktionen kontrollerar du att dina Azure Cosmos DB-konton uppfyller alla kriterier för förhandsversionsbehörighet. När du har aktiverat funktionen tar det 15–20 minuter att börja gälla.
Varning
När sammanslagning är aktiverat på ett konto tillåts endast begäranden från .NET SDK-versionen >= 3.27.0 eller Java SDK >= 4.42.0 eller Azure Cosmos DB Spark Connector >= 4.18.0 eller JavaScript SDK >= 4.3 för kontot, oavsett om sammanslagningar pågår eller inte. Begäranden från andra SDK:er (äldre .NET SDK, äldre Java SDK, äldre JavaScript SDK, Python SDK, go SDK) eller anslutningsappar som inte stöds (Azure Data Factory, Azure Search och Azure Functions-tillägget <= 3.x) blockeras och misslyckas. Kontrollera att du har uppgraderat till en SDK-version som stöds innan du aktiverar funktionen. När funktionen har aktiverats eller inaktiverats kan det ta 15–20 minuter att sprida den fullständigt till kontot. Om du planerar att inaktivera funktionen när du har slutfört användningen kan det ta 15–20 minuter innan begäranden från SDK:er och anslutningsappar som inte stöds för sammanslagning tillåts.
Om du vill kontrollera om ett Azure Cosmos DB-konto är berättigat till förhandsversionen kan du använda den inbyggda behörighetskontroll i Azure Portal. Från översiktssidan för ditt Azure Cosmos DB-konto i Azure Portal går du till Diagnostisera och lösa problem –>. Kör Kontrollera berättigande för förhandsversion av partitionssammanslagning-diagnostiken.
Så här identifierar du containrar som ska sammanfogas
Containrar som uppfyller båda dessa villkor kommer sannolikt att dra nytta av sammanslagning av partitioner:
- Villkor 1: Aktuell RU/s per fysisk partition är <3 000 RU/s
- Villkor 2: Det aktuella genomsnittliga lagringsutrymmet i GB per fysisk partition är <20 GB
Villkor 1 inträffar ofta när du tidigare har skalat upp RU/s (ofta för datainmatning) och nu vill skala ned till ett stabilt tillstånd. Villkor 2 inträffar ofta när du tar bort/TTL en stor mängd data, vilket lämnar oanvända partitioner.
Villkor 1
Om du vill fastställa aktuella RU/s per fysisk partition går du till Mått från ditt Cosmos-konto. Välj måttet Fysiskt partitionsdataflöde och filtrera till din databas och container. Tillämpa delning med PhysicalPartitionId.
För containrar som använder autoskalning visar det här måttet det maximala antalet RU/s som för närvarande har etablerats på varje fysisk partition. För containrar som använder manuell kapacitet visar detta mått den manuella RU/s för varje fysisk partition.
I exemplet nedan har vi en container för automatisk skalning etablerad med 5 000 RU/s (skalar mellan 500 och 5 000 RU/s). Den har fem fysiska partitioner och varje fysisk partition har 1 000 RU/s.
Villkor 2
Om du vill fastställa den aktuella genomsnittliga lagringen per fysisk partition letar du först reda på containerns totala lagring (data + index).
Gå till
Leta sedan reda på det totala antalet fysiska partitioner. Det här måttet är det distinkta antalet PhysicalPartitionIds i diagrammet PhysicalPartitionThroughput som vi såg i Villkor 1. I vårt exempel har vi fem fysiska partitioner.
Slutligen beräknar du: Total lagring i GB/antal fysiska partitioner. I vårt exempel har vi ett genomsnitt på (74 GB/fem fysiska partitioner) = 14,8 GB per fysisk partition.
Baserat på villkoren 1 och 2 kan containern eventuellt dra nytta av sammanslagning av partitioner.
Slå samman fysiska partitioner
När flaggan -WhatIf skickas i PowerShell kör Azure Cosmos DB en simulering och returnerar det förväntade resultatet av sammanslagningen. Det här resultatet returneras trots att själva sammanfogningen inte körs. När flaggan inte skickas körs sammanfogningen mot resursen. När det är klart matar kommandot ut den aktuella mängden lagringsutrymme i KB per fysisk partition efter sammanslagning.
Tips
Innan du kör en sammanslagning rekommenderar vi att du ställer in dina fördelade RU/s (antingen manuella RU/s eller max RU/s för autoskalning) så nära det önskade stabila tillståndet RU/s efter sammanslagning som möjligt, för att hjälpa till att säkerställa att systemet beräknar en effektiv partitionslayout.
Använd Install-Module för att installera Az.CosmosDB-modulen med förhandsversionsfunktioner aktiverade.
$parameters = @{
Name = "Az.CosmosDB"
AllowPrerelease = $true
Force = $true
}
Install-Module @parameters
För etablerade dataflödescontainrar använder du Invoke-AzCosmosDBSqlContainerMerge med parametern -WhatIf för att förhandsgranska sammanfogningen utan att utföra åtgärden.
$parameters = @{
ResourceGroupName = "<resource-group-name>"
AccountName = "<cosmos-account-name>"
DatabaseName = "<cosmos-database-name>"
Name = "<cosmos-container-name>"
WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters
Starta sammanfogningen genom att köra samma kommando utan parametern -WhatIf .
$parameters = @{
ResourceGroupName = "<resource-group-name>"
AccountName = "<cosmos-account-name>"
DatabaseName = "<cosmos-database-name>"
Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters
För databaser med delat dataflöde startar du sammanfogningen med hjälp az cosmosdb mongodb database mergeav .
az cosmosdb mongodb database merge \
--account-name '<cosmos-account-name>'
--name '<cosmos-database-name>'
--resource-group '<resource-group-name>'
Övervaka sammanslagningsåtgärder
Partitionssammanslagning är en tidskrävande åtgärd och det finns inget serviceavtal om hur lång tid det tar att slutföra. Tiden beror på mängden data i containern och antalet fysiska partitioner. Vi rekommenderar att du tillåter minst 5–6 timmar för sammanfogning att slutföras.
När partitionssammanslagning körs i containern avbryts den pågående sammanfogningsåtgärden om du ändrar containerinställningar (TTL, indexeringsprincip, unika nycklar osv.). Om du ökar ru/s medan en sammanslagning körs avbryts den pågående sammanfogningsåtgärden och containerns RU/s uppdateras med det nya värdet. Beroende på vilka RU/s som begärs kan din uppskalning vara omedelbar eller dröja längre. Om du minskar RU/s när en sammanslagning körs, uppdateras RU/s omedelbart till den nya RU/s-nivån. Den pågående sammanfogningen fortsätter med samma antal målpartitioner baserat på RU/s som angavs när sammanfogningen utlöstes. Vi rekommenderar att du väntar tills sammanslagningsåtgärden har slutförts innan du ändrar inställningarna för containern eller dataflödet.
Du kan spåra om sammanslagning fortfarande pågår genom att kontrollera aktivitetsloggen och filtrera fram händelsen Slå samman de fysiska partitionerna i en MongoDB-samling eller Sammanfoga de fysiska partitionerna i en SQL-container.
Begränsningar
Följande är begränsningar för sammanslagningsfunktionen just nu.
Villkor för förhandsversion av berättigande
Om du vill registrera dig i förhandsversionen måste ditt Azure Cosmos DB-konto uppfylla alla följande kriterier:
- Ditt Azure Cosmos DB-konto använder API för NoSQL eller MongoDB med version >=3.6.
- Ditt Azure Cosmos DB-konto använder etablerat dataflöde (manuellt eller autoskalning). Sammanslagning gäller inte för serverlösa konton.
- Ditt Azure Cosmos DB-konto är ett konto för en skrivregion (sammanslagning stöds för närvarande inte för skrivkonton i flera regioner).
- Ditt Azure Cosmos DB-konto använder inte någon av följande funktioner:
- Om du använder API för NoSQL måste ditt program använda Azure Cosmos DB .NET v3 SDK (version 3.27.0 eller senare) eller Java v4 SDK (version 4.42.0 eller senare) eller JavaScript V4 SDK (version 4.3.0 eller senare). När förhandsgranskning av sammanslagning är aktiverat på ditt konto accepterar kontot inte begäranden som skickas från andra .NET-/Java-SDK:er eller äldre .NET/Java SDK-versioner.
- Det finns inga SDK- eller drivrutinskrav för att använda funktionen med API för MongoDB.
- Ditt Azure Cosmos DB-konto har inga anslutningar som inte stöds för närvarande.
- Azure Data Factory
- Azure Functions-tillägget <= 3.x (Azure Functions-tillägget 4.0 och senare stöds)
- Azure Cosmos DB Spark-anslutningsprogram < 4.18.0
- Alla bibliotek eller verktyg från tredje part som är beroende av en Azure Cosmos DB SDK som inte är .NET v3 SDK >= v3.27.0 eller Java v4 SDK >= 4.42.0 eller JavaScript v4 SDK >= 4.3.0
Kontoresurser och konfiguration
- Sammanslagning är endast tillgängligt för API för NoSQL- och MongoDB-konton. För API för MongoDB-konton måste MongoDB-kontoversionen vara 3.6 eller senare.
- Sammanslagning är endast tillgänglig för skrivkonton som är begränsade till en enda region. Stöd för skrivkonton i flera regioner är inte tillgängligt.
- Konton som använder sammanslagningsfunktioner kan inte heller använda dessa funktioner (om dessa funktioner läggs till i ett sammanslagningsaktiverat konto kan kontot inte slå samman resurser):
- När en container har sammanfogats går det inte att läsa ändringsflödet med starttid. Stöd för den här funktionen planeras för framtiden.
SDK-krav (endast API för NoSQL)
Konton med sammanslagningsfunktionen aktiverad stöds endast när du använder den senaste versionen av .NET v3 SDK eller Java v4 SDK. När funktionen är aktiverad för ditt konto (oavsett om du kör kopplingen) får du bara använda det SDK som stöds för kontot. Begäranden som skickas från andra SDK:er eller tidigare versioner accepteras inte. Så länge du använder SDK:t som stöds kan programmet fortsätta att köras medan en sammanslagning pågår.
Hitta den senaste versionen av SDK:et som stöds:
| SDK | Versioner som stöds | Pakethanterarens länk |
|---|---|---|
| .NET SDK v3 | >= 3.27.0 | https://www.nuget.org/packages/Microsoft.Azure.Cosmos |
| Java SDK v4 | >= 4.42.0 | https://mvnrepository.com/artifact/com.azure/azure-cosmos |
Stöd för andra SDK:er planeras för framtiden.
Tips
Du bör se till att ditt program har uppdaterats för att använda en kompatibel SDK-version innan du registrerar dig i förhandsversionen. Om du använder en äldre SDK följer du lämplig migreringsguide:
- Äldre .NET v2 SDK: migreringsguide för .NET SDK v3
- Äldre Java v3 SDK: Migreringsguide för Java SDK v4
Kontakter som inte stöds
Om du registrerar dig för förhandsgranskningen fungerar följande anslutningar inte.
- Azure Data Factory ¹
- Azure Functions-tillägget <= 3.x (Azure Functions-tillägget 4.0 och senare stöds) ¹
- Azure Cosmos DB Spark-anslutningsprogram < 4.18.0
- Alla bibliotek eller verktyg från tredje part som är beroende av en Azure Cosmos DB SDK som inte är .NET v3 SDK >= v3.27.0 eller Java v4 SDK >= 4.42.0
¹ Stöd för dessa anslutningar planeras för framtiden.
Nästa steg
- Läs mer om hur du använder Azure CLI med Azure Cosmos DB.
- Läs mer om hur du använder Azure PowerShell med Azure Cosmos DB.
- Läs mer om partitionering i Azure Cosmos DB.