Dela via


Partition runt gränser

Använda partitionering för att kringgå databas-, nätverks- och beräkningsgränser

I molnet har alla tjänster begränsningar i sin förmåga att skala upp. Azure-tjänstgränser dokumenteras i Azure-prenumerations- och tjänstgränser, kvoter och begränsningar. Gränserna omfattar antal kärnor, databasstorlek, frågedataflöde och nätverksdataflöde. Om systemet blir tillräckligt stort kan du nå en eller flera av dessa gränser. Använd partitionering för att kringgå dessa gränser.

Det finns många sätt att partitioneras i ett system, till exempel:

  • Partitionering av en databas för att undvika gränser för databasstorlek, data-I/O eller antal samtidiga sessioner.

  • Partitionering av en kö eller meddelandebuss för att undvika gränser för antalet begäranden eller antalet samtidiga anslutningar.

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

En databas kan partitioneras vågrätt, lodrätt eller funktionellt.

  • I horisontell partitionering, även kallad horisontell partitionering, innehåller varje partition data för en delmängd av den totala datamängden. 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.

  • I vertikal partitionering innehåller varje partition en delmängd av fälten för objekten i datalagret. Du kan till exempel placera fält som används ofta i en partition och mindre ofta använda fält i en annan.

  • Vid funktionell partitionering partitioneras data beroende på hur de används av varje begränsad kontext i systemet. Du kan till exempel lagra fakturadata i en partition och produktinventeringsdata i en annan. Schemana är oberoende.

Mer information finns i Datapartitionering.

Rekommendationer

Partitionering av olika delar av programmet. Databaser är en självklar kandidat för partitionering, men överväg även lagring, cache, köer och beräkningsinstanser.

Utforma partitionsnyckeln för att undvika hotspots. Om du partitionera en databas, men en shard fortfarande får de flesta begäranden, har du inte löst problemet. Helst distribueras belastningen jämnt över alla partitioner. Till exempel, använd kund-ID för hashing och inte den första bokstaven i kundens namn, eftersom vissa bokstäver är vanligare. Samma princip gäller vid partitionering av en meddelandekö. Välj en partitionsnyckel som leder till en jämn distribution av meddelanden över uppsättningen köer. Mer information finns i Sharding.

Partitionering runt Azure-prenumerations- och tjänstgränser. Enskilda komponenter och tjänster har gränser, men det finns även begränsningar för prenumerationer och resursgrupper. För mycket stora program kan du behöva partitionera kring dessa gränser.

Partitionering på olika nivåer. Överväg att distribuera en databasserver på en virtuell dator. Den virtuella datorn har en virtuell hårddisk som backas upp av Azure Storage. Lagringskontot tillhör en Azure-prenumeration. Observera 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 begränsar antalet VM-kärnor. I allmänhet är det enklare att partitionera lägre i hierarkin. Endast stora program ska behöva partitioneras på prenumerationsnivå.