Dela via


Partition runt gränser

Använd partitionering för att arbeta runt databas-, nätverks- och beräkningsgränser

I molnet har alla tjänster begränsningar i sina möjligheter att skala upp. Azure-tjänstens gränser dokumenteras i Azure-prenumerationer, tjänstbegränsningar, kvoter och krav. Gränserna kan vara antal kärnor, databasstorlek, frågedataflöde och nätverksflöde. Du kan nå en eller flera av dessa gränser om systemet blir tillräckligt stort. Använd partitionering för att komma runt dessa gränser.

Det finns många sätt att dela upp ett system, t.ex.:

  • Partitionera en databas för att undvika gränser vad gäller databasens storlek, I/O för data eller antalet samtidiga sessioner.

  • Partitionera en kö eller meddelandebuss för att undvika gränser för antalet förfrågningar eller antalet samtidiga anslutningar.

  • Partitionera en App Service-webbapp för att undvika gränser för antalet instanser per App Service-plan.

En databas kan partitioneras horisontellt, vertikalt eller funktionellt.

  • Vid horisontell partitionering har varje partition data för en delmängd av den totala datauppsättningen. Partitionerna delar samma dataschema. Kunder vars namn börjar med A–M går till exempel i en partition, N–Z till en annan partition.

  • Vid vertikal partitionering har varje partition en delmängd av fälten för objekten i datalagret. Man kan till exempel placera fält som behöver kommas åt ofta i en partition, och fält som används mer sällan i en annan.

  • Vid funktionell partitionering är data uppdelade enligt hur de används av varje begränsad kontext i systemet. Man kan till exempel lagra fakturadata i en partition och produktlagerdata i en annan. Schemana är oberoende.

Mer detaljerad vägledning finns i Datapartitionering.

Rekommendationer

Partitionera olika delar av programmet. Databaser är självklara kandidater för partitionering, men man kan även överväga minne, cache, köer och beräkningsinstanser.

Utforma partitionsnyckeln för att undvika hotspots. Om du partitionerar en databas och det fortfarande är en shard som får de flesta förfrågningarna har du inte löst problemet. Belastningen ska helst fördelas jämnt över alla partitionerna. Du kan till exempel skapa hash efter kund-ID i stället för första bokstaven i kundens namn, eftersom en del bokstäver förekommer oftare. Samma sak gäller när en meddelandekö partitioneras. Välj en partitionsnyckel som ger en jämn fördelning av meddelanden över flera köer. Mer information finns i Horisontell partitionering.

Partitionera runt prenumeration och tjänstbegränsningar för Azure. Enskilda komponenter och tjänster har begränsningar, men det finns även begränsningar för prenumerationer och resursgrupper. För mycket stora program kan du behöva partitionera runt dessa begränsningar.

Partitionera på olika nivåer. Tänk dig en databasserver som är distribuerad på en virtuell dator. Den virtuella datorn har en virtuell hårddisk som stöds av Azure Storage. Lagringskontot tillhör en Azure-prenumeration. Tänk på att varje steg i hierarkin har gränser. Databasservern kan ha en gräns för anslutningspoolen. Virtuella datorer har CPU- och nätverksgränser. Lagringen har IOPS-gränser. Prenumerationen har gränser för antalet kärnor i den virtuella datorn. Det är i allmänhet lättare att partitionera längre ned i hierarkin. Endast stora program behöver partitioneras på prenumerationsnivå.