Rekommendationer för att optimera skalning och partitionering

Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:

PE:05 Optimera skalning och partitionering. Införliva tillförlitlig och kontrollerad skalning och partitionering. Arbetsbelastningens skalningsenhetsdesign utgör grunden för skalnings- och partitioneringsstrategin.

Den här guiden beskriver rekommendationerna för skalning och partitionering av en arbetsbelastning. Skalning är möjligheten att öka eller minska de resurser som allokeras till en arbetsbelastning baserat på efterfrågan. Partitionering innebär att dela upp arbetsbelastningen i mindre, hanterbara enheter för att distribuera data och bearbeta över flera resurser. En arbetsbelastning som inte skalas eller partitioneras kan uppleva dåliga prestanda under perioder med hög efterfrågan och underutnyttad kapacitet under perioder med låg efterfrågan.

Definitioner

Period Definition
Automatisk skalning En funktion som automatiskt justerar kapacitetsgränserna för en tjänst baserat på fördefinierade konfigurationer, så att den kan skala upp eller ned efter behov.
Kapacitet Den övre gränsen eller den maximala kapaciteten för en viss tjänst eller funktion.
Klienttillhörighet (sessionstillhörighet) Avsiktlig routning av begäranden från en enda klient till en enskild serverinstans för att säkerställa konsekvent sessionshantering.
Konsekvens (distribuerad databas) Enhetligheten för data över flera noder i en distribuerad databas, vilket säkerställer att alla repliker har samma data vid en viss tidpunkt.
Konsekvens (relationsdatabas) Egenskapen för en transaktion som för en databas från ett giltigt tillstånd till ett annat, vilket upprätthåller dataintegriteten.
Konsekvensnivå En konfiguration som definierar hur och när data replikeras i ett distribuerat databassystem, som avgör kompromissen mellan konsekvens och prestanda.
Datalåsning En mekanism som används för att förhindra samtidiga uppdateringar av samma data.
Horisontell skalning En skalningsmetod som lägger till instanser av en viss typ av resurs.
Optimistisk samtidighet En metod för att uppdatera databaser som använder ögonblicksbilder för att göra uppdateringar i stället för traditionella låsmekanismer.
Partitionering Processen att fysiskt dela upp data i separata datalager.
Skalbarhet Möjligheten för en arbetsbelastning att dynamiskt ändra sina kapacitetsgränser för att hantera olika nivåer av efterfrågan.
Skalningsenhet En grupp resurser som skalas proportionellt tillsammans.
Tillståndstillhörighet Lagring av klientsessionsdata på en enskild server så att samma server hanterar efterföljande begäranden från samma klient.
Vertikal skalning En skalningsmetod som lägger till beräkningskapacitet till befintliga resurser.

Viktiga designstrategier

Både skalning och partitionering bidrar till prestandaeffektiviteten genom att se till att resurserna används effektivt och att arbetsbelastningen kan hantera olika belastningar. Dessa metoder är särskilt viktiga i molnmiljöer där program måste vara flexibla och anpassningsbara för föränderliga krav. Skalning säkerställer att du kan utöka arbetsbelastningskapaciteten för att möta ökande krav. Med partitionering kan du dela upp uppgifter eller data effektivt för att hantera dessa växande behov. Grunden för båda dessa processer är arbetsbelastningens skalningsenhetsdesign. Den avgör hur din arbetsbelastning ska växa och distribuera uppgifter. Genom att använda en tillförlitlig och kontrollerad metod för skalning och partitionering kan du kringgå potentiella ineffektivitet i arbetsbelastningar.

Optimera skalning

Optimering av skalning är en process för att justera antalet servrar, instanser eller resurser för att uppfylla de varierande kraven för en arbetsbelastning. Det säkerställer att arbetsbelastningen kan hantera ökad trafik eller krav utan prestandaförsämring eller stilleståndstid.

Välja en skalningsstrategi

Att välja en skalningsstrategi innebär att välja mellan vertikala eller vågräta metoder för att förbättra kapaciteten för en arbetsbelastning baserat på dess specifika krav. Om du väljer rätt strategi säkerställer du att resurserna justeras effektivt för att uppfylla arbetsbelastningskraven utan överanvändning eller slöseri. Om du vill välja rätt skalningsstrategi måste du förstå användningsfallen för vertikal och horisontell skalning och hur de uppfyller behoven i din arbetsbelastning.

Förstå vertikal skalning. Med vertikal skalning kan du öka kapaciteten för en enskild resurs, till exempel uppgradera till en större server eller instansstorlek. Vertikal skalning är användbart när arbetsbelastningen kan dra nytta av ökad processorkraft, minne eller andra resurser i en enda instans. Vertikal skalning är lämplig för arbetsbelastningar som inte är lätta att dela upp i mindre delar eller när programarkitekturen inte stöder horisontell skalning.

Förstå horisontell skalning. Med horisontell skalning kan du lägga till fler instanser eller resurser för att distribuera arbetsbelastningen över flera servrar. Horisontell skalning ger fördelar som förbättrad återhämtning, ökad kapacitet och möjlighet att hantera ökade trafik- eller arbetsbelastningskrav. Det är effektivt för molnbaserade program som är utformade för att köras på flera noder. Horisontell skalning är lämplig för arbetsbelastningar som kan delas in i mindre delar som körs oberoende av varandra.

Förstå arbetsbelastningen. Lämpligheten för vertikal eller horisontell skalning beror på arbetsbelastningens specifika egenskaper och krav. Regelbunden prestandaövervakning och testning inom följande områden kan hjälpa till att optimera skalningsstrategin över tid:

  • Krav: Förstå de specifika kraven för arbetsbelastningen genom att ta hänsyn till faktorer som resurskrav, skalbarhetsbehov och arbetsbelastningens begränsningar.

  • Skalningsenheter: Skapa en skalningsenhetsdesign för komponenter som förväntas skalas tillsammans. Till exempel kan 100 virtuella datorer kräva två köer och tre lagringskonton för att hantera den extra arbetsbelastningen. Skalningsenheten skulle vara 100 virtuella datorer, två köer och tre lagringskonton. Du bör oberoende skala alla komponenter som upplever variationer i kapacitetsanvändningen.

  • Arkitektur: Utvärdera utformningen av programarkitekturen. Vissa program kan vara utformade för horisontell skalning, med tillståndslösa komponenter som enkelt kan distribueras över flera instanser. Andra program kan ha tillståndskänsliga komponenter eller beroenden som gör vertikal skalning mer lämplig. Utvärdera kraven på skalbarhet och elasticitet för arbetsbelastningen.

Utforma infrastruktur som ska skalas

Att utforma infrastruktur för skalning är en process för att skapa en arkitektur som kan hantera ökande krav och arbetsbelastningar genom att lägga till eller justera resurser efter behov. Det omfattar planering och implementering av lösningar som kan skalas horisontellt eller vertikalt för att hantera tillväxt. Strategier omfattar att undvika singletons som kan bli flaskhalsar och frikoppla programkomponenter för att säkerställa oberoende skalbarhet. När du utformar en arbetsbelastning så att den är skalbar kan den effektivt distribuera arbetsbelastningen över flera resurser, vilket förhindrar flaskhalsar och maximerar resursutnyttjandet.

Undvik singletons. Du bör undvika att använda en enda centraliserad resurs för hela arbetsbelastningen. Distribuera i stället din arbetsbelastning över flera resurser för bättre skalbarhet, feltolerans och prestanda. Utforska några specifika exempel och designöverväganden för att undvika singletons i arbetsbelastningsresurser:

  • Köbaserad belastningsutjämning: I stället för att förlita sig på en enda kö för att bearbeta meddelanden bör du överväga att partitionera arbetsbelastningen över flera köer för att distribuera bearbetningsbelastningen. Det ger bättre skalbarhet och parallell bearbetning.

  • Databearbetning: Singleton-mönster förekommer ofta i databearbetningsscenarier där bearbetningen inte fylls ut. Dela upp långvariga uppgifter i mindre uppgifter som kan skalas bättre för att distribuera arbetsbelastningen över flera resurser och dra nytta av parallellitet.

  • Designmönster: Designmönster, till exempel fläkt/fläkt eller rör och filter , kan hjälpa dig att undvika singletons i arbetsflöden. Dessa mönster möjliggör distribution av bearbetningsuppgifter över flera resurser och främjar skalbarhet och flexibilitet.

Frikoppla komponenter. Avkoppling av programkomponenter är en viktig aspekt av designen för skalbarhet. Det innebär att dela upp programmet i mindre, oberoende komponenter som kan köras och skalas oberoende baserat på specifika arbetsbelastningskrav. Om en komponent till exempel kräver fler resurser på grund av ökad efterfrågan kan du skala komponenten utan att påverka de andra. Den här flexibiliteten säkerställer effektiv resursallokering och förhindrar flaskhalsar. Genom att avkoda komponenter kan du isolera fel och minimera effekten på det övergripande programmet. Om en komponent misslyckas kan de andra komponenterna fortsätta att fungera oberoende av varandra.

Frikopplade komponenter är enklare att underhålla och uppdatera. Ändringar eller uppdateringar av en komponent kan göras utan att påverka de andra eftersom de är oberoende. Följ dessa riktlinjer för att frikoppla programkomponenter för skalbarhet:

  • Separation av problem: Identifiera ansvarsområden och funktioner i ditt program. Dela upp ansvarsområdena i separata komponenter baserat på deras specifika uppgifter. Du kan till exempel ha separata komponenter för användarautentisering, databehandling och användargränssnitt.

  • Lös koppling: Utforma komponenterna så att de kommunicerar med varandra via väldefinierade gränssnitt och protokoll. Den här designen minskar beroenden mellan komponenter och möjliggör enklare ersättning eller skalning av enskilda komponenter.

  • Asynkron kommunikation: Använd asynkrona kommunikationsmönster som meddelandeköer eller händelsedrivna arkitekturer för att frikoppla komponenter ytterligare. Dessa mönster gör att komponenter kan bearbeta uppgifter oberoende av varandra i sin egen takt, vilket förbättrar den övergripande skalbarheten.

  • Mikrotjänster: Överväg att implementera mikrotjänster, som är små, oberoende tjänster som fokuserar på specifika affärsfunktioner. Varje mikrotjänst kan utvecklas, distribueras och skalas oberoende av varandra, vilket ger större flexibilitet och skalbarhet.

Utforma ett program som ska skalas

När du skalar en arbetsbelastning bör du utforma programmet för att distribuera belastningen. Bara för att du kan lägga till fler repliker på infrastrukturnivå betyder det inte att ditt program kan använda replikerna. Att utforma ett program att skala handlar om att strukturera ett program så att det kan hantera ökade krav genom att distribuera sin arbetsbelastning mellan resurser. Undvik lösningar som kräver klienttillhörighet, datalåsning eller tillståndstillhörighet för en enskild instans om det är möjligt. Du vill dirigera en klient eller process till en resurs som har tillgänglig kapacitet. Tänk på följande strategier för att utforma för skalbarhet för program:

Eliminera sessionstillstånd på serversidan. Du bör utforma program så att de är tillståndslösa där det är möjligt. För tillståndskänsliga program bör du använda ett tillståndslager som är externt för servern. Att externalisera sessionstillståndet är att lagra sessionsdata utanför programservern eller containern. Du kan externalisera sessionstillståndet för att distribuera sessionsdata över flera servrar eller tjänster, vilket möjliggör sömlös sessionshantering i en distribuerad miljö. Tänk på följande när du externaliserar sessionstillståndet:

  • Utvärdera sessionskraven. Förstå sessionsdata som behöver lagras och hanteras. Överväg sessionsattribut, sessionstimeouter och eventuella specifika krav för sessionsreplikering eller beständighet. Fastställ storleken på sessionstillståndet och frekvensen för läs- och skrivåtgärder.

  • Välj en lösning. Välj en lagringslösning som överensstämmer med dina behov av prestanda och skalbarhet. Alternativen omfattar att använda en distribuerad cache, en databas eller en sessionstillståndstjänst. Överväg faktorer som datakonsekvens, svarstid och skalbarhet när du gör ditt val.

  • Konfigurera ditt program. Uppdatera programmet så att det använder den valda lagringslösningen för sessionstillstånd. Du kan behöva ändra programmets konfigurationsfiler eller kod för att ansluta till den externa lagringstjänsten.

  • Uppdatera logiken. Ändra programmets sessionshanteringslogik för att lagra och hämta sessionsdata från den externa lagringslösningen. Du kan behöva använda API:er eller bibliotek som tillhandahålls av lagringslösningen för att hantera sessionstillstånd.

Eliminera klienttillhörighet. Klienttillhörighet kallas även sessionstillhörighet eller fästsessioner. När du eliminerar klienttillhörighet distribuerar du klientbegäranden jämnt över flera repliker eller servrar, utan att dirigera alla begäranden från en klient till samma replik. Den här konfigurationen kan förbättra skalbarheten och prestandan för program genom att tillåta alla tillgängliga repliker att bearbeta begäranden.

Granska algoritmen för belastningsutjämning. En belastningsutjämningsalgoritm kan orsaka oavsiktlig och artificiell klient som fäster där för många begäranden skickas till en serverdelsinstans. Fästa kan inträffa om algoritmen har konfigurerats för att alltid skicka begäranden från samma användare till samma instans. Det kan också inträffa om begäranden är för lika varandra.

Eliminera datalåsning. Datalåsning säkerställer konsekvens men har prestandanackdelar. Det kan orsaka låseskaleringar och negativt påverka samtidighet, svarstid och tillgänglighet. Om du vill eliminera datalåsning bör du implementera optimistisk samtidighet. Icke-relationella databaser bör använda optimistisk samtidighetskontroll och ha rätt konsekvensnivå. Din strategi för datapartitionering bör också stödja dina samtidighetsbehov.

Använd dynamisk tjänstidentifiering. Dynamisk tjänstidentifiering är en process för att automatiskt identifiera och registrera tjänster i ett distribuerat system. Det gör att klienter kan identifiera tillgängliga tjänster utan att vara nära kopplade till specifika instanser. Klienter ska inte kunna vara direkt beroende av en specifik instans i arbetsbelastningen. För att undvika dessa beroenden bör du använda en proxy för att distribuera och omdistribuera klientanslutningar. Proxyn fungerar som en mellanhand mellan klienter och tjänster och tillhandahåller ett abstraktionslager som gör att tjänster kan läggas till eller tas bort utan att klienter påverkas.

Använd bakgrundsaktiviteter. När ett program skalas kan det hantera en ökande arbetsbelastning eller ett högre antal samtidiga begäranden. Genom att avlasta intensiva uppgifter som bakgrundsaktiviteter kan huvudprogrammet hantera användarbegäranden utan resursintensiva åtgärder som överbelastar det. Följ de här stegen för att avlasta aktiviteter som bakgrundsaktiviteter:

  1. Hitta de CPU-intensiva och I/O-intensiva uppgifterna i ditt program som du kan avlasta. Dessa uppgifter omfattar vanligtvis tunga beräkningar eller interaktioner med externa resurser, till exempel databaser eller nätverksåtgärder.

  2. Utforma ditt program så att det stöder bakgrundsaktiviteter. Frikoppla de intensiva uppgifterna från huvudprogramlogik och tillhandahålla en mekanism för att starta och hantera bakgrundsaktiviteter.

  3. Implementera bearbetning av bakgrundsaktiviteter med lämpliga tekniker eller ramverk. Inkludera funktioner som tillhandahålls av ditt programmeringsspråk eller din plattform, till exempel asynkron programmering, trådning eller uppgiftsköer. Innehåller intensiva åtgärder i separata aktiviteter eller trådar. Dessa aktiviteter kan köras samtidigt eller schemaläggas att köras med specifika intervall.

  4. Distribuera bakgrundsaktiviteter om det finns många av dem, eller om aktiviteterna kräver mycket tid eller resurser. En möjlig lösning finns i mönstret Konkurrerande konsumenter.

Konfigurera skalning

Att konfigurera skalning är en process där du konfigurerar och justerar parametrar för att dynamiskt allokera resurser baserat på arbetsbelastningskrav. Den omfattar strategier som att använda funktioner för automatisk skalning, förstå tjänstskalningsgränser och implementera meningsfulla belastningsmått. Korrekt konfiguration säkerställer att ett program kan svara på varierande krav samtidigt som effektiviteten maximeras. Tänk på följande strategier när du konfigurerar skalning:

Använd tjänster med autoskalning. Autoskalningsfunktionen skalar automatiskt infrastrukturen för att möta efterfrågan. Använd PaaS-erbjudanden (plattform som en tjänst) med inbyggda autoskalningsfunktioner. Den enkla skalningen på PaaS är en stor fördel. För att skala ut virtuella datorer krävs till exempel en separat lastbalanserare, hantering av klientbegäranden och externt lagrat tillstånd. PaaS-erbjudanden hanterar de flesta av dessa uppgifter.

Begränsa autoskalning. Ange gränser för automatisk skalning för att minimera överskalning som kan leda till onödiga kostnader. Ibland kan du inte ange skalningsgränser. I dessa fall bör du ställa in aviseringar för att meddela dig när komponenten når den maximala skalningsgränsen och överskalas.

Förstå gränser för tjänstskalning. När du förstår gränser, steg och begränsningar för tjänstskalning kan du fatta välgrundade beslut när du väljer en tjänst. Skalningsgränser avgör om den valda tjänsten kan hantera den förväntade arbetsbelastningen, skala effektivt och uppfylla programmets prestandakrav. Skalningsgränser att överväga omfattar:

  • Skalningsgränser: Skalningsgränser är den maximala kapacitet som en plats eller tjänst kan hantera. Det är viktigt att känna till dessa gränser för att säkerställa att tjänsten kan hantera den förväntade arbetsbelastningen och hantera högsta användning utan prestandaförsämring. Varje resurs har en övre skalningsgräns. Om du behöver gå längre än skalningsgränserna bör du partitionera din arbetsbelastning.

  • Skalningssteg: Tjänsterna skalas i definierade steg. Beräkningstjänster kan till exempel skalas efter instanser och poddar, medan databaser kan skalas efter instanser, transaktionsenheter och virtuella kärnor. Det är viktigt att förstå dessa steg för att optimera resursallokering och förhindra resursväxling.

  • Skalningsbegränsningar: Med vissa tjänster kan du skala upp eller ut, men begränsa möjligheten att automatiskt ändra skalning. Du tvingas skala in manuellt, eller så kan du behöva distribuera om en ny resurs. Dessa begränsningar är ofta till för att skydda arbetsbelastningen. Att skala ned eller skala in kan påverka arbetsbelastningens tillgänglighet och prestanda. En tjänst kan framtvinga vissa begränsningar för att säkerställa att arbetsbelastningen har tillräckligt med resurser för att fungera effektivt. Dessa begränsningar kan påverka datakonsekvens och synkronisering, särskilt i distribuerade system. Tjänsten kan ha mekanismer för att hantera datareplikering och konsekvens under upp- eller utskalning, men kanske inte ger samma stödnivå för nedskalning eller inskalning.

Använd meningsfulla belastningsmått. Skalning bör använda meningsfulla belastningsmått som skalningsutlösare. Meningsfulla belastningsmått omfattar enkla mått, till exempel CPU eller minne. De omfattar även mer avancerade mått, till exempel ködjup, SQL-frågor, anpassade måttfrågor och HTTP-kölängd. Överväg att använda en kombination av enkla och avancerade belastningsmått som skalningsutlösare.

Använd en buffert. En buffert är outnyttjad kapacitet som kan användas för att hantera toppar i efterfrågan. En väl utformad arbetsbelastning planerar för oväntade toppar i arbetsbelastningen. Du bör lägga till en buffert för att hantera toppar för horisontell och lodrät skalning.

Förhindra flaxning. Växling är ett loopningsvillkor som inträffar när en skalningshändelse utlöser en motsatt skalningshändelse, vilket skapar en kontinuerlig skalningsåtgärd fram och tillbaka. Om skalning i till exempel minskar antalet instanser kan det leda till att CPU-användningen ökar i de återstående instanserna, vilket utlöser en utskalningshändelse. Utskalningshändelsen gör i sin tur att CPU-användningen sjunker och upprepar processen.

Det är viktigt att välja en tillräcklig marginal mellan tröskelvärdena för utskalning och inskalning för att undvika växling. Du kan förhindra frekventa och onödiga in- och utskalningsåtgärder genom att ange tröskelvärden som ger en betydande skillnad i CPU-användning.

Använd distributionsstämplar. Det finns tekniker som gör det enklare att skala en arbetsbelastning. Du kan använda mönstret Distributionsstämplar för att enkelt skala en arbetsbelastning genom att lägga till en eller flera skalningsenheter.

Risk: Även om skalning hjälper till att optimera kostnaderna genom att justera kapaciteten för att möta efterfrågan, kan det resultera i övergripande ökade kostnader under långa perioder med hög efterfrågan.

Testa skalning

Testning av skalning innebär att simulera olika arbetsbelastningsscenarier i en kontrollerad miljö för att utvärdera hur en arbetsbelastning svarar på olika nivåer av efterfrågan. Det hjälper till att säkerställa att arbetsbelastningen skalas effektivt och maximerar prestandaeffektiviteten under olika belastningar.

Du måste se till att din arbetsbelastning skalas effektivt under verkliga förhållanden. Det är viktigt att utföra belastnings- och stresstester i en miljö som speglar produktionskonfigurationen. Dessa tester, som utförs i icke-produktionsmiljöer, gör att du kan utvärdera både vertikala och horisontella skalningsstrategier och avgöra vilken som optimerar prestandan mest effektivt. Här är en rekommenderad metod för att testa skalning:

  • Definiera arbetsbelastningsscenarier. Identifiera de viktiga arbetsbelastningsscenarier som du behöver testa, till exempel ökad användartrafik, samtidiga begäranden, datavolym eller resursanvändning.

  • Använd produktionsliknande testmiljö. Skapa en separat testmiljö som liknar produktionsmiljön när det gäller infrastruktur, konfiguration och data.

  • Ange prestandamått. Definiera de prestandamått som ska mätas, till exempel svarstid, dataflöde, processor- och minnesanvändning och felfrekvenser.

  • Utveckla testfall. Utveckla testfall som simulerar olika arbetsbelastningsscenarier och gradvis ökar belastningen för att utvärdera prestanda på olika nivåer.

  • Köra och övervaka tester. Kör testerna med hjälp av de definierade testfallen och samla in prestandadata på varje belastningsnivå. Övervaka arbetsbelastningens beteende, resursförbrukning och prestandaförsämring.

  • Analysera och optimera skalning. Analysera testresultaten för att identifiera flaskhalsar i prestanda, skalbarhetsbegränsningar eller förbättringsområden. Optimera konfigurationen, infrastrukturen eller koden för att förbättra skalbarhet och prestanda. Det tar tid för skalningen att slutföras, så testa effekterna av skalningsfördröjningar.

  • Adressberoenden. Hitta potentiella beroendeproblem. Skalning eller partitionering i ett område i en arbetsbelastning kan orsaka prestandaproblem för ett beroende. Tillståndskänsliga delar av en arbetsbelastning, till exempel databaser, är den vanligaste orsaken till problem med beroendeprestanda. Databaser kräver noggrann design för att skala horisontellt. Du bör överväga åtgärder, till exempel optimistisk samtidighet eller datapartitionering, för att möjliggöra mer dataflöde till databasen.

  • Testa igen efter justeringar. Upprepa skalbarhetstesterna när du har implementerat optimeringar för att verifiera förbättringarna och se till att arbetsbelastningen kan hantera de förväntade arbetsbelastningarna effektivt.

Kompromiss: Överväg budgetbegränsningar och kostnadseffektivitetsmål för din arbetsbelastning. Vertikal skalning kan innebära högre kostnader på grund av behovet av större och mer kraftfulla resurser. Horisontell skalning ger kostnadsbesparingar genom att använda mindre instanser som kan läggas till eller tas bort baserat på efterfrågan.

Partitionsarbetsbelastning

Partitionering är processen att dela upp en stor datamängd eller arbetsbelastning i mindre, mer hanterbara delar som kallas partitioner. Varje partition innehåller en delmängd av data eller arbetsbelastning och lagras eller bearbetas vanligtvis separat. Partitionering möjliggör parallell bearbetning och minskar konkurrensen. Genom att dela upp arbetsbelastningen i mindre enheter kan programmet bearbeta varje enhet oberoende av varandra. Resultatet är bättre användning av resurser och snabbare bearbetningstider. Partitionering hjälper också till att distribuera data över flera lagringsenheter, vilket minskar belastningen på enskilda enheter och förbättrar den övergripande prestandan.

Förstå partitionering

Vilken partitioneringsmetod du använder beror på vilken typ av data eller arbetsbelastning du har och vilken teknik du använder. Några vanliga strategier för partitionering är:

  • Horisontell partitionering: I den här metoden delas datauppsättningen eller arbetsbelastningen baserat på specifika kriterier, till exempel intervall med värden eller specifika attribut. Varje partition innehåller en delmängd av data som uppfyller de definierade kriterierna.

  • Vertikal partitionering: Med den här metoden delas datauppsättningen eller arbetsbelastningen baserat på specifika attribut eller kolumner. Varje partition innehåller en delmängd av kolumnerna eller attributen, vilket ger effektivare åtkomst till nödvändiga data.

  • Funktionell partitionering: Med den här metoden delas data eller arbetsbelastning upp baserat på de specifika funktioner eller åtgärder som behöver utföras. Varje partition innehåller de data eller komponenter som krävs för en specifik funktion, vilket möjliggör optimerad bearbetning och prestanda.

Planera partitionering

Det är viktigt att tänka på faktorer som datadistribution, frågemönster, datatillväxt och arbetsbelastningskrav vid partitionering. Korrekt planering och design är avgörande för att säkerställa effektiviteten av partitionering och maximera prestandaeffektiviteten. Om du hanterar partitionering som en eftertanke är det mer utmanande eftersom du redan har en live-arbetsbelastning att underhålla. Du kan behöva ändra dataåtkomstlogik, distribuera stora mängder data mellan partitioner och stödja fortsatt användning under datadistributionen.

Implementera partitionering

Det är viktigt att analysera egenskaperna för dina data, åtkomstmönster, samtidighetskrav och skalbarhetsmål när du bestämmer vilken typ av partitionering som ska användas. Varje typ av partitionering har sina egna fördelar och överväganden. Här följer några faktorer att tänka på för varje typ av partitionering:

  • Horisontell partitionering är lämplig när du vill distribuera data över flera resurser eller servrar för bättre skalbarhet och prestanda. Det är effektivt när arbetsbelastningen kan parallelliseras och bearbetas oberoende av varandra på varje partition. Överväg horisontell partitionering när flera användare eller processer behöver kunna komma åt eller uppdatera datauppsättningen samtidigt.

  • Vertikal partitionering är lämplig när vissa attribut eller kolumner används ofta, medan andra används mindre ofta. Vertikal partitionering ger effektiv åtkomst till nödvändiga data genom att minimera onödig datahämtning.

  • Funktionell partitionering är lämplig när olika funktioner kräver olika delmängder av data och kan bearbetas oberoende av varandra. Funktionell partitionering kan optimera prestanda genom att låta varje partition fokusera specifika åtgärder.

Testa och optimera partitionering

Testa partitioneringsschemat för att kontrollera strategins effektivitet och effektivitet så att du kan göra justeringar för att förbättra prestandan. Mät faktorer som svarstid, dataflöde och skalbarhet. Jämför resultaten med prestandamål och identifiera eventuella flaskhalsar eller problem. Baserat på analysen identifierar du potentiella optimeringsmöjligheter. Du kan behöva omdistribuera data mellan partitioner, justera partitionsstorlekar eller ändra partitioneringsvillkoren.

Kompromiss: Partitionering ökar komplexiteten i utformningen och utvecklingen av en arbetsbelastning. Partitionering kräver konversationer och planering mellan utvecklare och databasadministratörer.

Risk: Partitionering medför vissa potentiella problem som måste övervägas och åtgärdas, inklusive:

  • Datasnedställning: Partitionering kan leda till snedställning av data, där vissa partitioner får en oproportionerlig mängd data eller arbetsbelastning jämfört med andra. Datasnedställning kan leda till obalans i prestanda och ökad konkurrens på specifika partitioner.

  • Frågeprestanda: Dåligt utformade partitioneringsscheman kan påverka frågeprestanda negativt. Om frågor behöver komma åt data över flera partitioner kan det kräva extra samordning och kommunikation mellan partitioner, vilket leder till ökad svarstid.

Azure-underlättande

Optimera skalning. Azure har infrastrukturkapacitet för vertikal och horisontell skalning. Azure-tjänster har olika prestandanivåer som kallas SKU:er. Med SKU:er kan du skala lodrätt. Många av Azures resurser stöder automatisk skalning eller andra skalningsalternativ på plats. Vissa resurser stöder avancerade mått eller anpassade indata för att stödja finjustering av skalningsbeteende. De flesta skalningsimplementeringar i Azure kan ange gränser och stödja den observerbarhet som krävs för att aviseras om ändringar.

Med Azure Monitor kan du övervaka olika mått och villkor i dina program och din infrastruktur. Du kan använda Monitor för att utlösa automatiska skalningsåtgärder baserat på fördefinierade regler. I Azure Kubernetes Service (AKS) kan du till exempel använda Monitor för att aktivera horisontell automatisk skalning av poddar (HPA) och automatisk skalning av kluster. Med hjälp av Monitors övervaknings- och aviseringsfunktioner kan du effektivt underlätta skalning i Azure och se till att dina program och din infrastruktur kan anpassas dynamiskt för att möta efterfrågan.

Du kan också skapa anpassad automatisk skalning i Azure. Du kan använda aviseringar i Övervaka för resurser som inte har någon autoskalningsfunktion. Dessa aviseringar kan konfigureras så att de är frågebaserade eller måttbaserade och kan utföra åtgärder med hjälp av Azure Automation. Automation tillhandahåller en plattform för att vara värd för och köra PowerShell- och Python-kod i Azure, molnet och lokala miljöer. Den innehåller funktioner som att distribuera runbooks på begäran eller enligt ett schema, köra historik och loggning, integrerat hemlighetslager och källkontrollintegrering.

Designa program för skalning: Här är några sätt som Azure underlättar designen av programskalning.

  • Eliminera datalåsning: I Azure SQL Database kan du aktivera optimerad låsning för att förbättra prestanda för databaser som kräver strikt konsekvens.

  • Använda bakgrundsuppgifter: Azure erbjuder tjänster och vägledning för att implementera bakgrundsjobb. Mer information finns i Bakgrundsjobb.

  • Implementera belastningsutjämning: Azure tillhandahåller lastbalanserare som inte kräver klienttillhörighet. Dessa lastbalanserare omfattar Azure Front Door, Azure Application Gateway och Azure Load Balancer.

Partitionera en arbetsbelastning: Azure erbjuder olika partitioneringsstrategier för olika datalager. Dessa strategier hjälper till att förbättra prestanda och skalbarhet genom att distribuera data över flera partitioner. Mer information finns i Strategier för datapartition.

Checklista för prestandaeffektivitet

Se den fullständiga uppsättningen rekommendationer.