Enheter för programbegäran i Azure Cosmos DB
GÄLLER för:
SQL API
API för Cassandra
Gremlin API
tabell-API
Azure Cosmos DB API för MongoDB
Azure Cosmos DB har stöd för många API:er, till exempel SQL, MongoDB, Cassandra, Gremlin och Table. Varje API har en egen uppsättning databasåtgärder. De här åtgärderna sträcker sig från enkla punktläsningar och skrivningar till komplexa frågor. Varje databasåtgärd förbrukar systemresurser baserat på åtgärdens komplexitet.
Kostnaden för alla databasåtgärder normaliseras av Azure Cosmos DB och uttrycks i form av enheter för programbegäran (Request Units, RU:er). Enhet för programbegäran är en prestandavaluta som abstraherar systemresurser som CPU, IOPS och minne som krävs för att utföra de databasåtgärder som stöds av Azure Cosmos DB.
Kostnaden för att göra en punktläsning (dvs. hämtning av ett enskilt objekt efter dess ID och partitionsnyckelvärde) för ett objekt på 1 kB är 1 enhet för programbegäran (eller 1 RU). Alla andra databasåtgärder tillskrivs på samma sätt en kostnad i form av RU:er. Oavsett vilket API du använder för att interagera med din Azure Cosmos-behållare mäts kostnaderna alltid med RU:er. Oavsett om databasåtgärden är en skrivning, punktläsning eller fråga mäts kostnaderna alltid i RU:er.
Följande bild illustrerar den övergripande tanken med RU:er:
För att hantera och planera kapacitet ser Azure Cosmos DB till att antalet RU:er för en given databasåtgärd som avser en given datamängd är deterministisk. Du kan undersöka svarshuvudet för att ta reda på antalet RU:er som förbrukas av en valfri databasåtgärd. När du förstår de faktorer som påverkar RU-avgifter och programmets dataflödeskrav kan du köra programmet kostnadseffektivt.
Vilken typ av Azure Cosmos-konto du använder avgör hur förbrukade RU:er debiteras. Det finns tre lägen där du kan skapa ett konto:
Etablerat dataflödesläge: I det här läget etablerar du antalet RU:er för ditt program per sekund i steg om 100 RU:er per sekund. Om du vill skala det etablerade dataflödet för ditt program kan du öka eller minska antalet RU:er när som helst i steg om 100 RU:er. Du kan göra ändringarna med hjälp av programmering eller via Azure-portalen. Du debiteras per timme för det antal RU:er per sekund som du har etablerat. Mer information finns i artikeln Etablerat dataflöde.
Du kan etablera dataflöde för två specifika granulariteter:
- Containrar: Mer information finns i Etablera dataflöde på en Azure Cosmos-container.
- Databaser: Mer information finns i Etablera dataflöde på en Azure Cosmos-databas.
Serverlöst läge: I det här läget behöver du inte etablera något dataflöde när du skapar resurser i ditt Azure Cosmos-konto. I slutet av faktureringsperioden debiteras du för det antal enheter för förfrågningsbegäran som har förbrukats av databasåtgärderna. Mer information finns i artikeln Om serverlöst dataflöde.
Autoskalningsläge: I det här läget kan du automatiskt och omedelbart skala dataflödet (RU/s) för databasen eller containern baserat på dess användning, utan att påverka arbetsbelastningens tillgänglighet, svarstid, dataflöde eller prestanda. Det här läget passar bra för verksamhetskritiska arbetsbelastningar som har varierande eller oförutsägbara trafikmönster och kräver serviceavtal med hög prestanda och skalning. Mer information finns i artikeln autoskala dataflöde.
Överväganden för enhet för programbegäran
När du beräknar antalet RU:er som förbrukas av din arbetsbelastning bör du tänka på följande faktorer:
Objektstorlek: När storleken på ett objekt ökar, ökar även antalet enheter för programbegäran som används för att läsa eller skriva objektet.
Objektindexering: Som standard indexeras alla objekt automatiskt. Färre enheter för programbegäran används om du väljer att inte indexera vissa av objekten i en container.
Antal objektegenskaper: Om standardindexering används för alla egenskaper ökar det antal enheter för programbegäran som används för att skriva ett objekt allt eftersom antalet objektegenskaper ökar.
Indexerade egenskaper: En indexeringsprincip för varje container avgör vilka egenskaper som indexeras som standard. Om du vill minska förbrukningen av enheter för programbegäran för skrivåtgärder bör du begränsa antalet indexerade egenskaper.
Datakonsekvens: Konsekvensnivåerna för stark och avgränsad föråldhet förbrukar ungefär två gånger fler RU:er vid läsåtgärder jämfört med andra mindre konsekventa konsekvensnivåer.
Typ av läsningar: Punktläsningar kostar betydligt färre RU:er än frågor.
Frågemönster: Komplexiteten i en fråga påverkar hur många enheter för programbegäran som förbrukas för en åtgärd. Faktorer som påverkar kostnaden för frågeåtgärder omfattar:
- Antalet frågeresultat
- Antalet predikat
- Predikatens karaktär
- Antalet användardefinierade funktioner
- Storleken på källdata
- Storleken på resultatuppsättningen
- Projektioner
Samma fråga för samma data kostar alltid samma antal RU:er vid upprepade körningar.
Skriptanvändning: Precis som med frågor förbrukar lagrade procedurer och utlösare RU:er baserat på komplexiteten i de åtgärder som utförs. När du utvecklar ditt program kan du läsa rubriken för begärandekostnad för att få mer information om hur mycket RU-kapacitet varje åtgärd förbrukar.
Enheter för programbegäran och flera regioner
Om du etablerar R-RU:er på en Cosmos-container (eller databas) Cosmos DB att R-RU:er är tillgängliga i varje region som är associerad med ditt Cosmos-konto. Du kan inte selektivt tilldela RU:er till en viss region. RU:erna som etablerats på en Cosmos-container (eller databas) etableras i alla regioner som är associerade med ditt Cosmos-konto.
Förutsatt att en Cosmos-container har konfigurerats med R-RU:er och det finns N-regioner som är associerade med Cosmos-kontot, är det totala antalet RU:er som är tillgängliga globalt i containern = R x N.
Ditt val av konsekvensmodell påverkar också dataflödet. Du kan få ett dataflöde på ungefär 2 gånger för de mer avslappnade konsekvensnivåerna (t.ex. session, konsekvent prefix och slutlig konsekvens) jämfört med starkare konsekvensnivåer (t.ex. avgränsad föråldrhet eller stark konsekvens).
Nästa steg
- Läs mer om hur du etablerar dataflöde på Azure Cosmos-containrar och databaser.
- Läs mer om serverlös på Azure Cosmos DB.
- Läs mer om logiska partitioner.
- Lär dig hur du etablerar dataflöde på en Azure Cosmos-container.
- Lär dig hur du etablerar dataflöde på en Azure Cosmos-databas.
- Lär dig hur du hittar avgiften för begärandeenheten för en åtgärd.
- Lär dig hur du optimerar kostnaden för etablerat dataflöde i Azure Cosmos DB.
- Lär dig hur du optimerar kostnader för läsningar och skrivningar i Azure Cosmos DB.
- Lär dig hur du optimerar frågekostnaden i Azure Cosmos DB.
- Lär dig hur du använder mått för att övervaka dataflödet.
- Försöker du göra kapacitetsplanering för en migrering till Azure Cosmos DB?
- Om allt du vet är antalet virtuella kärnor och servrar i ditt befintliga databaskluster kan du läsa om att uppskatta enheter för programbegäran med hjälp av virtuella kärnor eller virtuella processorer
- Om du känner till typiska begärandefrekvenser för din aktuella databasarbetsbelastning kan du läsa om att uppskatta enheter för programbegäran Azure Cosmos DB kapacitetsplaneraren