Rekommendationer för att optimera dataprestanda
Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:
PE:08 | Optimera dataprestanda. Optimera datalager, partitioner och index för avsedd och faktisk användning i arbetsbelastningen. |
---|
Den här guiden beskriver rekommendationerna för att optimera dataprestanda. Att optimera dataprestanda handlar om att förfina effektiviteten med vilken arbetsbelastningen bearbetar och lagrar data. Varje arbetsbelastningsåtgärd, transaktion eller beräkning är vanligtvis beroende av snabb och korrekt hämtning, bearbetning och lagring av data. När dataprestanda optimeras körs arbetsbelastningen smidigt. Komprometterade dataprestanda skapar en dominoeffekt av dålig prestandaeffektivitet. Om du inte optimerar dataprestanda resulterar det i svarsfördröjningar, längre svarstider och minskad skalbarhet. Det äventyrar effektiviteten för hela arbetsbelastningen.
Definitioner
Period | Definition |
---|---|
CAP-sats | Ett ramverk som används för att överväga konsekvens, tillgänglighet och partitionstolerans för att förklara kompromisserna i datakonsekvens. |
Återskapa databasindex | En underhållsaktivitet som släpper och återskapar ett index. |
Omorganisering av databasindex | En underhållsaktivitet som optimerar det aktuella databasindexet. |
Datalager | En resurs som lagrar data, till exempel en databas, ett objektlager eller en filresurs. |
Slutlig konsekvens | En datasynkroniseringsmodell som möjliggör tillfällig inkonsekvens i datarepliker innan de synkroniseras. |
Index | En databasstruktur som ger snabb åtkomst till objekt. |
Online Analytical Processing (OLAP) | En teknik som organiserar stora företagsdatabaser, stöder komplex analys och utför komplexa analysfrågor utan att påverka transaktionssystem negativt. |
Online Transaction Processing (OLTP) | En teknik som registrerar affärsinteraktioner när de sker i den dagliga driften av en organisation. |
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, vilket förbättrar prestanda och skalbarhet. |
PACELC-sats | Ett ramverk som används för att överväga partitionstolerans, tillgänglighet, konsekvens och svarstid för att förklara kompromisserna i datakonsekvensen. |
Partitionering | Processen att fysiskt dela upp data i separata datalager. |
Frågejustering | En process som optimerar hastigheten för en databasfråga. |
Skrivskyddade repliker | En livekopia av en primär databas som gör att du kan avlasta lästrafik från en skrivdatabas. |
Viktiga designstrategier
Optimera dataanvändningen genom att se till att datalager, partitioner och index är optimerade för avsedd användning och för faktisk användning i en arbetsbelastning. Optimerad dataanvändning kan förbättra frågeprestanda, minska resursförbrukningen och förbättra systemets övergripande effektivitet. Tänk på följande strategier:
Profildata. Förstå dina data och se till att din datamodell passar bra för din arbetsbelastning. Överväg faktorer som datanormalisering, indexeringsstrategier och partitioneringstekniker. För effektiv datahämtning ser du till att du väljer lämpliga datatyper, definierar relationer mellan entiteter och fastställer en optimal indexeringsstrategi.
Finjustera konfigurationen av datalagringen. Konfigurera datalagringsinfrastrukturen så att den överensstämmer med dina arbetsbelastningskrav. Välj lämplig lagringsteknik, till exempel relationsdatabaser, NoSQL-databaser och informationslager. Optimera lagringsinställningar, till exempel buffertstorlek, cachelagringsmekanismer och komprimering.
Optimera frågeprestanda. Analysera och optimera frågor som körs i arbetsbelastningen. Använd tekniker som frågeoptimering, indexering och cachelagring. Om du vill identifiera flaskhalsar använder du frågeplaner och prestandaövervakningsverktyg och gör sedan nödvändiga förbättringar.
Övervaka och finjustera systemet regelbundet. Övervaka arbetsbelastningens prestanda kontinuerligt och iterera datalagringskonfigurationen och frågeoptimeringarna. Baserat på metodtips för prestandajustering analyserar du systemmått, identifierar förbättringsområden och implementerar ändringar.
Profildata
Dataprofilering omfattar att undersöka data från en källa och samla in information om dem. Målet är att förstå arbetsbelastningsdatas kvalitet, struktur och egenskaper. Den här processen möjliggör identifiering av problem som saknade värden, dubbletter, inkonsekventa format och andra avvikelser. Tänk på följande strategier för effektiv dataprofilering:
Förstå datastrukturen. Granska strukturen för dina data, inklusive tabeller, kolumner och relationer. Fastställ vilka datatyper, längder och begränsningar som tillämpas på varje kolumn. Utvärderingen av datastrukturen hjälper dig att förstå hur data organiseras och hur de relaterar till andra dataelement.
Analysera datavolymen. Utvärdera datavolymen för att förstå de övergripande storleks- och tillväxtmönstren. Fastställ antalet poster eller dokument och storleken på enskilda tabeller eller samlingar. Den här informationen hjälper dig att uppskatta lagringskraven och identifiera skalbarhetsproblem.
Identifiera datarelationer. Utforska relationerna mellan dataelement, till exempel primär- och sekundärnyckelrelationer. Förstå hur data är anslutna, så att du kan avgöra hur ändringar i en tabell eller ett dokument kan påverka relaterade data.
Utvärdera datakvaliteten. Utvärdera kvaliteten på dina data genom att undersöka faktorer som fullständighet, noggrannhet, konsekvens och unikhet. Identifiera dataavvikelser, saknade värden eller duplicerade poster som kan påverka dataintegriteten och frågeprestanda. Det här steget hjälper dig att identifiera områden för datarensning och förbättring.
Samla in datadistribution. Analysera fördelningen av värden i varje kolumn för att fastställa datamönster. Identifiera frekventa och sällsynta värden, extremvärden och snedställning av data. Om du vill optimera frågeprestanda väljer du lämpliga indexeringsstrategier och frågeoptimeringstekniker baserat på distributionen.
Övervaka dataprestanda
Övervakning av dataprestanda är en metod för att konsekvent spåra effektiviteten för datalager, partitioner och index i realtid. Det handlar om att samla in och analysera prestandamått som är specifika för dataåtgärder, med hjälp av verktyg som är skräddarsydda för övervakningslösningar på systemnivå, databasspecifika eller tredjepartslösningar. Med effektiv övervakning av dataprestanda kan du proaktivt identifiera och minimera potentiella flaskhalsar, vilket säkerställer att datarelaterade processer och uppgifter är effektiva. Överväg följande strategier för att övervaka dataprestanda:
Samla in dataspecifika mått. Samla in viktiga mått som är direkt relaterade till dataprestanda. Dessa mått omfattar svarstider för frågor, dataflöde, disk-I/O som är relaterade till dataåtkomst och inläsningstider för specifika datapartitioner.
Konfigurera dataaviseringar. Konfigurera aviseringar specifikt för datamått. Använd fördefinierade tröskelvärden eller avvikelser i dessa mått för att utlösa aviseringar. Med aviseringar kan du få meddelanden när prestandamått överskrider godkända intervall eller visar onormalt beteende. Om en databasfråga till exempel tar längre tid än förväntat eller om dataflödet sjunker avsevärt utlöser det en avisering. Du kan konfigurera dessa aviseringar med hjälp av specialiserade övervakningsverktyg eller anpassade skript.
Diagnostisera problem med dataprestanda. Granska regelbundet de insamlade datamåtten för att hitta potentiella flaskhalsar eller försämringar i dataåtgärder. Visualiseringsverktyg eller instrumentpaneler kan vara ovärderliga i den här processen, vilket hjälper till att lyfta fram trender, flaskhalsar och extremvärden i dataprestanda. När du har identifierat det går du in på grundorsakerna till dessa problem och planerar lämpliga reparationssteg.
Partitionera data
Partitionering innebär att dela upp stora datamängder eller högvolymarbetsbelastningar i mindre, hanterbara delmängder. Partitionering förbättrar dataprestandaeffektiviteten genom att distribuera arbetsbelastningen och förbättra parallell bearbetning. Det säkerställer också effektivare dataåtkomst baserat på specifika behov och frågemönster. Du kan partitionera data lodrätt eller vågrätt (kallas även horisontell partitionering).
Strategi | Definition | Exempel | Användningsfall |
---|---|---|---|
Lodrät partitionering | Dela upp en tabell i mindre tabeller genom att välja specifika kolumner eller fält för varje partition. Varje partition representerar en delmängd av fullständiga data. | Om du har en tabell med kolumnerna A, B, C och D kan du skapa en tabell med kolumnerna A och B och en annan med kolumnerna C och D. | – En tabell innehåller många kolumner, men frågor kommer inte åt alla kolumner tillsammans. – Vissa kolumner är större än andra och att separera dem kan öka I/O-prestanda. – Olika datadelar har olika åtkomstmönster. |
Vågrät partitionering | Dela upp data baserat på rader eller intervall med värden (kallas även horisontell partitionering). Varje partition innehåller en delmängd rader med liknande egenskaper. | Om du har en tabell med raderna 1 till 1 000 kan du skapa en partition med raderna 1 till 500 och en annan med raderna 501 till 1 000. | – En datauppsättning är för stor för en enda plats eller server. – Data nås baserat på specifika intervall eller filter. – Behöver distribuera arbetsbelastningen mellan fysiska noder eller servrar för bättre prestanda. |
Överväg följande steg för att partitionera dina data:
Analysera data och frågor. Analysera data- och frågemönster för att identifiera lämpliga partitionerings- eller horisontell partitioneringsstrategier. Förstå typen av data, åtkomstmönster och distributionskrav.
Fastställ en nyckel. Välj en partitionerings- eller partitioneringsnyckel för att distribuera data mellan partitioner eller shards. Välj nyckeln noggrant baserat på dataegenskaper och frågekrav.
Fastställ logik. Fastställa en partitionerings- eller horisontell partitioneringslogik baserat på den valda nyckeln. Överväg att dela upp data i intervall, tillämpa hash-algoritmer eller använda andra partitioneringstekniker.
Konfigurera infrastrukturen. Konfigurera databassystemet så att det stöder partitionering eller horisontell partitionering. Överväg att skapa nödvändig infrastruktur, definiera partitioner eller shards och konfigurera datadistributionen.
Mer information finns i Vägledning för datapartitionering.
Optimera databasfrågor
Optimera databasfrågor förfinar frågor med hjälp av tekniker som indextips och cachelagring. Dessa justeringar ökar effektiviteten och hastigheten för datahämtning. Därför har databasen en lättare arbetsbelastning, resurser fungerar mer effektivt och användarna får smidigare interaktioner. Tänk på följande strategier för att optimera databasfrågor:
Skriv om frågor. Granska och analysera komplexa frågor för att identifiera möjligheter att skriva om dem. Överväg att omstrukturera frågelogik, eliminera redundanta åtgärder eller förenkla frågesyntaxen.
Undvik frågeproblemet N+1. Minimera antalet tur- och returresor till databasen med hjälp av kopplingar och batchhämtning för att effektivt hämta relaterade data.
Ordna om kopplingar. Utvärdera frågeplanen och överväg att ordna om kopplingsordningen för att minimera antalet rader i varje kopplingsåtgärd. Ordningen som du kopplar tabeller i kan påverka frågeprestanda.
Använd indextips. Använd indextips så att en databasmotor kan ange användningen av index när den kör en fråga. Indextips vägleder optimeringen för att välja de lämpligaste indexen.
Cachelagrar frågor. Lagra resultatet av frågor som körs ofta i minnet. Cachelagring av frågor eliminerar behovet av att köra samma fråga upprepade gånger, vilket minskar omkostnaderna för frågebearbetning.
Optimera låsning. Undvik onödiga eller restriktiva låstips i frågor. Effektiva låsstrategier kan förbättra frågeprestanda och samtidighet. Tillämpa optimerade låsmekanismer som databassystemet tillhandahåller. Analysera och justera isoleringsnivåer för att balansera datakonsekvens och frågeprestanda.
Övervaka och finjustera. Övervaka frågeprestandamått, till exempel körning, resursanvändning och frågedataflöde. Använd verktyg för databasprofilering och övervakningsfunktioner för att identifiera frågor som fungerar dåligt. Utvärdera och finjustera frågeplaner baserat på insamlade prestandadata. Analysera frågeplaner och vänta statistik för att identifiera flaskhalsar. Använd den informationen för att optimera frågeprestanda.
Optimera indexprestanda
Index förbättrar datahämtningshastigheten genom att göra det möjligt för databaser att snabbt hitta data med hjälp av specifika kolumner eller fält. När du optimerar dessa index blir sorterings- och kopplingsåtgärderna mer effektiva, vilket leder till snabbare frågor. Väloptimerade index minskar diskens I/O-åtgärder som krävs för frågor. Om du tar bort onödiga eller redundanta index frigörs även värdefullt lagringsutrymme. Tänk på följande strategier för att optimera indexprestanda:
Analysera frågemönster. Förstå de frågemönster som körs i databasen. Identifiera de frågor som körs ofta och kan försämra prestanda. Analysera frågemönster för att avgöra vilka index som är bra för att optimera prestanda.
Utvärdera befintliga index. Granska befintliga index i databasen. Utvärdera deras användning, prestandaeffekter och relevans för frågemönstren. Identifiera redundanta eller oanvända index som du kan ta bort för att förbättra skrivprestanda och minska lagringskostnaderna.
Identifiera kolumner för indexering. Identifiera kolumner som ofta används i var, anslut ochsortera efter satser i dina frågor. Dessa kolumner är potentiella kandidater för indexering eftersom de kan aktivera snabb datahämtning.
Välj en lämplig indextyp. Välj en lämplig indextyp baserat på databassystemet. Vanliga alternativ är b-trädindex för likhets- och intervallfrågor, hash-index för exakta matchningsfrågor och fulltextindex för textsökningsåtgärder. Välj en indextyp som bäst matchar dina frågekrav.
Överväg indexkolumnordning. När du skapar sammansatta index eller index med flera kolumner bör du överväga ordningen på kolumnerna. Placera de kolumner som används oftast i frågor i början av indexet. Kolumnordningen hjälper till att säkerställa att din arbetsbelastning effektivt använder index för en mängd olika frågor.
Balansera indexstorlek. Undvik att skapa index för kolumner med låg kardinalitet eller kolumner som har ett lågt antal distinkta värden. Sådana index kan vara ineffektiva och öka databasens storlek. Indexkolumner som har hög selektivitet är i stället indexkolumner.
Underhåll indexanvändningen. Övervaka kontinuerligt användningen och prestandan för dina index. Leta efter möjligheter att skapa nya index eller ändra befintliga index baserat på ändringar i frågemönster eller prestandakrav. Ta bort eller uppdatera index som inte längre är till nytta. Index har underhållskostnader. När data ändras kan index fragmenteras och påverka prestanda. Utför regelbundet indexunderhållsuppgifter, till exempel återskapa eller omorganisera index, för att säkerställa optimala prestanda.
Testa och verifiera. Innan du ändrar index i en produktionsmiljö ska du utföra noggrann testning och validering. Mät prestandaeffekten för indexrevisioner med hjälp av representativa arbetsbelastningar. Kontrollera förbättringarna mot fördefinierade riktmärken.
Kompromiss: B-trädindex kan ha höga lagringskostnader och exakta matchningsfrågor kan vara långsamma. Hash-index är inte lämpliga för intervallfrågor eller jämförelseoperatorer. Fulltextindex kan ha höga lagringskrav och icke-textbaserade datafrågor kan vara långsamma.
Överväg datakomprimering
Datakomprimering är en process för att minska storleken på data för att optimera lagringsutrymmet och förbättra arbetsbelastningens prestandaeffektivitet. Komprimerade data kräver mindre lagringsutrymme och mindre bandbredd för överföring, vilket resulterar i snabb dataöverföring. Du skulle komprimera data för att minska ditt lagringsavtryck och förbättra dataåtkomsttiden. När du komprimerar data minskar I/O-åtgärder och krav på nätverksbandbredd.
Förlustfri komprimering och förlustfri komprimering är algoritmer för datakomprimering. Algoritmer för förlustfri komprimering minskar storleken på data utan att förlora någon information. Algoritmer för förlust av komprimering uppnår höga komprimeringsförhållanden genom att ta bort mindre viktig eller redundant information.
Kompromiss: För att komprimera och dekomprimera data behöver du beräkningsresurser, till exempel CPU och minne. Ju mer data du komprimerar, desto fler resurser behöver du.
Arkivera och rensa data
Arkivering och rensning är strategier som effektiviserar datalagringen. Arkivering flyttar äldre data som används mindre ofta till en mer kostnadseffektiv lagring. Rensning av data tar bort redundanta data permanent. De bidrar till prestandaeffektivitet genom att minska datavolymen, öka dataåtkomsthastigheten och minska säkerhetskopierings- och återställningstiderna:
Minska datavolymen: Mindre data innebär snabbare bearbetningstider, vilket säkerställer snabba svar på användarbegäranden.
Öka dataåtkomsthastigheten: En trimmad datauppsättning möjliggör snabbare frågor och datahämtning, vilket optimerar systemets svarstider.
Minska säkerhetskopierings- och återställningstiderna: Mindre datauppsättningar påskyndar säkerhetskopierings- och återställningsprocesser, minimerar stilleståndstiden och säkerställer konsekventa prestanda.
Arkivering och rensning är avgörande för att upprätthålla hög prestandaeffektivitet i datadrivna system.
Optimera lagringsbelastning
Optimering av lagringsbelastning innebär att begäranden effektiviseras till lagringssystemet. Det hjälper till att eliminera onödiga begäranden. Det förbättrar också datahämtningen och förhindrar att lagringen överbelastas. Genom att optimera lagringsbelastningen ser du till att lagringssystemet förblir responsivt för legitima begäranden och upprätthåller högsta prestanda. Implementera strategier för att minska bearbetningsbördan för datalagret. Tänk på följande strategier för att optimera datalagerbelastningen:
Använda cachelagring
Cachelagring lagrar data som används ofta i ett lagringsområde med snabb åtkomst, vilket gör datahämtning snabbare än att hämta dem från huvudkällan. Den här tekniken ökar dataprestandan genom att minska åtkomsttiden och undvika repetitiva datahämtningar. Cachelagring förbättrar läshastigheter och svarstider för användare, särskilt för data som används ofta Den här metoden är mest effektiv för statiska data eller data som sällan ändras.
För att säkerställa optimal cachelagringseffektivitet bör du överväga faktorer som förfalloprinciper, borttagningsstrategier och hantering av cachestorlek. Justera inställningarna, till exempel TTL (time to live) för optimala prestanda. Tänk på följande strategier om du vill använda en cache för att optimera lagringsbelastningen:
Cachelagring i minnet: Utför minnesintern cachelagring för att lagra data som används ofta i minnet för snabb hämtning. Du kan använda den här tekniken för programdata som är dyra att beräkna eller hämta från en databas. Minnesintern cachelagring är användbart för data som du läser ofta men inte ändras ofta.
Cachelagring av databasfrågor: Använd den här tekniken för att cachelagra resultaten av databasfrågor för att undvika att köra samma fråga flera gånger. Cachelagring av databasfrågor är användbart för komplexa och tidskrävande databasfrågor. När du cachelagra resultatet av en fråga returneras efterföljande begäranden för samma fråga snabbt.
Cachelagring av innehållsleveransnätverk: Använd den här tekniken för att cachelagra webbinnehåll på distribuerade nätverksservrar för att minska svarstiden och förbättra innehållsleveransen. Cachelagring av innehållsleveransnätverk är effektivt för statiskt innehåll, till exempel bilder, CSS-filer och JavaScript-filer. Innehållsleveransnätverk lagrar kopior av innehåll på flera platser över hela världen, så att användarna kan komma åt innehållet från en server som ligger nära dem geografiskt.
Använda skrivskyddade repliker
Många databaser stöder flera skrivskyddade repliker. Distribuera läsfrågor mellan repliker för att minimera efterfrågan på skrivdatabasen. Varje läsreplik kan hantera en delmängd av trafiken, vilket kan förbättra prestandan.
När du har en arbetsbelastning med flera datarepliker som du förväntar dig att vara synkroniserad är det bra att modellera det här distribuerade systemet med hjälp av PACELC-satsen. PACELC-satsen hjälper dig att förstå alternativ för svarstid kontra beständighetsavvägning i systemets icke-partitionerade tillstånd. Använd den här informationen för att välja en databasmotor och en strategi för datasynkronisering som bäst hanterar systemet i ett partitionerat och icke-partitionerat tillstånd. Mer information finns i CQRS-mönstret (Command and Query Responsibility Segregation).
Optimera datakonsekvens
I en distribuerad arbetsbelastning, där data finns på flera noder eller platser, avgör den konsekvensnivå du väljer hur snabbt ändringar på en plats återspeglas i andra. Att välja striktare konsekvens förbrukar fler beräkningsresurser och kan påverka prestandaeffektiviteten negativt. Å andra sidan medför en mindre strikt konsekvensnivå, som eventuell konsekvens, tillfälliga inkonsekvenser mellan noder, men kan öka prestandaeffektiviteten.
Slutlig konsekvens skapar en balans mellan datanoggrannhet och arbetsbelastningsprestanda. Ändringarna sprids gradvis i stället för omedelbart, vilket ökar arbetsbelastningens svarstider och databehandlingshastigheten. Även om den introducerar kortvariga inkonsekvenser visar arbetsbelastningen så småningom konsekventa data över alla noder. Om du väljer slutlig konsekvens kan du höja arbetsbelastningens prestanda och ytterligare förbättra tillgängligheten och skalbarheten.
Optimera datauppdateringar
Du kan använda optimistisk samtidighet för att hantera samtidiga uppdateringar av samma data. I stället för att låsa data och förhindra andra uppdateringar kan optimistisk samtidighet göra att flera användare eller processer kan fungera samtidigt och förutsätter att konflikter är sällsynta.
Med optimistisk samtidighet innehåller varje uppdateringsåtgärd en version eller tidsstämpel som representerar datatillståndet vid tidpunkten för uppdateringen. När en uppdatering i konflikt identifieras löser systemet konflikten genom att avvisa uppdateringen eller slå samman ändringarna.
Optimistisk samtidighet minimerar konkurrensen och gör att samtidiga uppdateringar kan fortsätta utan onödig låsning. Det minskar väntetiden för resurser och ger högt dataflöde.
Optimera dataförflyttning och bearbetning
Att optimera dataförflyttning och bearbetning innebär att förbättra effektiviteten och prestandan för åtgärder som rör extrahering, transformering, inläsning och bearbetning av data. Tänk på följande viktiga aspekter när det gäller att optimera dataförflyttning och bearbetning:
Optimering av extrahering, transformering och inläsning (ETL): Optimera ETL-processer för att minimera bearbetningstiden. Du kan effektivisera extraheringsprocessen, implementera effektiva transformeringsalgoritmer och optimera inläsningsprocessen. När du gör varje steg effektivt kan du optimera det övergripande arbetsflödet.
Parallell bearbetning: Använd parallella bearbetningstekniker för att förbättra prestanda. När du distribuerar databearbetningsuppgifter över flera trådar eller noder kan du dela upp och bearbeta arbetsbelastningen samtidigt, vilket resulterar i snabb bearbetning.
Batchbearbetning: Gruppera liknande uppgifter för att minska omkostnaderna som orsakas av upprepade åtgärder. Bearbeta flera uppgifter i en batch för att minska den totala bearbetningstiden.
Optimera lagringsdesign
Att optimera lagringsdesignen innebär att skapa en exakt datalagringsarkitektur och välja lämpliga lagringstekniker. En effektiv lagringsdesign förbättrar dataåtkomst, hämtning och manipulering. Genom strategisk lagringsdesign får en arbetsbelastning bättre svarstider och övergripande funktioner.
Design för datanäring
Datanärhet avser den strategiska placeringen av data närmare de användare eller tjänster som har åtkomst till dem oftast. Genom att minska det fysiska eller logiska avståndet mellan data och dess användare säkerställer datanärhet snabbare dataåtkomst och bättre svarstider. Tänk på följande strategier för att optimera designen för närhet:
Utvärdera dataåtkomstmönster: Utvärdera arbetsbelastningens åtkomstmönster och data som används ofta. Den här analysen kan hjälpa dig att avgöra var du ska placera data för maximal nytta.
Välj lösningar som stöder dataflytt: Överväg lösningar som erbjuder dynamisk dataflytt baserat på ändrade åtkomstmönster, vilket säkerställer optimal dataplacering.
Välj lösningar som stöder datasynkronisering: Om du använder en distribuerad användarbas väljer du lösningar som underlättar datasynkronisering i olika regioner, vilket säkerställer att datarepliker är tillgängliga i närheten av användarna.
Kompromiss: Om underliggande data ändras ofta implementerar du en mekanism för cacheintegrering för att säkerställa att cachelagrade data förblir uppdaterade.
Använda flerspråkig beständighet
Flerspråkig beständighet är att använda flera datalagringstekniker för att lagra och hantera olika typer av data i ett program eller system. Olika typer av databaser eller lagringslösningar uppfyller olika datakrav.
Polyglotpersistence drar nytta av fördelarna med varje datalagringsteknik för att säkerställa optimal prestanda och skalbarhet för varje typ av data. Du kan till exempel använda en relationsdatabas för att lagra strukturerade transaktionsdata. Och du kan använda en NoSQL-databas för att lagra ostrukturerade eller halvstrukturerade data.
Utforma ett schema för varje datalagringsteknik baserat på kraven för data. För relationsdatabaser kan du skapa normaliserade tabeller med lämpliga relationer. För NoSQL-databaser kan du definiera dokumentstrukturer eller nyckel/värde-par. Utveckla nödvändiga komponenter för att interagera med varje datalagringsteknik, till exempel API:er, dataåtkomstlager eller dataintegreringspipelines. Kontrollera att programmet kan läsa och skriva data till lämpliga datalager.
Kompromiss: En datastruktur som har låg normalisering kan förbättra prestanda men introducera komplexitet.
Separera OLTP- och OLAP-system
För att separera OLTP - och OLAP-system utformar och distribuerar du distinkta system för transaktionsbearbetning och analysbearbetningsuppgifter. Med den här separationen kan du optimera varje system för dess specifika arbetsbelastning och egenskaper.
OLTP-system används för transaktionsbearbetning i realtid. De hanterar effektivt och tillförlitligt enskilda transaktioner. OLTP-system används vanligtvis för att utföra dagliga operativa uppgifter, till exempel onlinebeställningsbearbetning, lagerhantering och kunddatahantering. OLTP-system prioriterar svarstider, konsekvens och samtidighet.
OLAP-system används för komplex analysbearbetning och rapportering. De hanterar stora mängder data och utför intensiva beräkningar och aggregeringar. OLAP-system används för uppgifter som business intelligence, datautvinning och beslutsstöd. OLAP-system prioriterar frågeprestanda, dataaggregering och flerdimensionell analys.
När du separerar OLTP- och OLAP-system kan du allokera lämpliga resurser och optimera varje system för dess specifika arbetsbelastning. Med separation kan du använda olika datamodelleringstekniker för varje system. OLTP-system använder vanligtvis normaliserade scheman för effektiv transaktionsbearbetning. OLAP-system kan använda avnormaliserade scheman eller datalagertekniker för att optimera frågeprestanda.
Azure-underlättande
Profileringsdata: Azure erbjuder verktyg och tjänster som du kan använda för att profilera data, till exempel Azure Data Catalog, Azure Purview och Azure Synapse Analytics. Med de här verktygen kan du extrahera, transformera och läsa in data från olika källor, utföra datakvalitetskontroller och få insikter om data.
Övervaka dataprestanda: Om du vill övervaka dataprestanda kan du använda Azure Monitor för att samla in och analysera infrastrukturmått, loggar och programdata. Du kan integrera Monitor med andra tjänster som Application Insights. Application Insights tillhandahåller övervakning av programprestanda och stöder många plattformar.
Application Insights samlar in användnings- och prestandadata. Du kan använda Log Analytics för att korrelera dessa data med konfigurations- och prestandadata mellan Azure-resurser.
Du kan använda insiktsfunktionen i Azure SQL och Azure Cosmos DB för att övervaka din databas. Med den här funktionen kan du diagnostisera och finjustera problem med databasprestanda.
Partitionering av data: Azure erbjuder olika partitioneringsstrategier för olika datalager. Varje datalager kan ha olika överväganden och konfigurationsalternativ för datapartitionering. Mer information finns i Strategier för datapartitionering.
Optimera databasfrågor och indexprestanda: Använd insiktsfunktionen för frågeprestanda i Azure SQL Database för att optimera frågor, tabeller och databaser. Du kan använda den här funktionen för att identifiera och felsöka problem med frågeprestanda.
För relationsdatabaser bör du följa riktlinjerna för indexdesign, SQL Server indexvägledning och Azure Cosmos DB-indexvägledning. Använd SQL Database för att utföra automatisk justering för frågor för att förbättra deras prestanda.
I SQL-databaser bör du regelbundet ordna om eller återskapa index. Identifiera långsamma frågor och finjustera dem för att förbättra prestanda. Många databasmotorer har frågejusteringsfunktioner. Mer information finns i Metodtips för frågeprestanda.
Azure Cosmos DB har en standardindexeringsprincip som indexerar varje egenskap för varje objekt och tillämpar intervallindex för valfri sträng eller tal. Den här principen ger dig effektiva frågeprestanda och du behöver inte hantera index i förväg.
Optimera lagringsbelastningen: Många Azure-databastjänster stöder läsrepliker. Tillgängligheten och konfigurationen av läsrepliker varierar beroende på Azure-databastjänsten. Mer information och alternativ finns i den officiella dokumentationen för varje tjänst.
Optimera lagringsdesignen: Azure erbjuder många olika datalager som passar dina arbetsbelastningsbehov. Förstå datalagertyper och välj ett Azure-datalager för ditt program.
Relaterade länkar
- Automatisk justering i SQL Database
- Azure Cosmos DB
- Vägledning för Azure Cosmos DB-index
- Azure SQL
- Metodtips för frågeprestanda
- CQRS-mönster
- Vägledning för datapartitionering
- Strategier för datapartitionering
- Standardprincip för indexering
- Vägledning för indexdesign
- OLAP-översikt
- OLTP-översikt
- Metodtips för partitionering
- Omorganisera eller återskapa index
- Välj ett Azure-datalager för ditt program
- SQL Server indexvägledning
- Förstå datalagertyper
Checklista för prestandaeffektivitet
Se den fullständiga uppsättningen rekommendationer.