Precis som alla andra databaser kan MySQL vara komplicerat och kan på ett ögonblick sluta sätta alla dina företag och uppgifter på spel. Men vanliga misstag ligger till grund för de flesta problem som påverkar prestandan.
För att säkerställa att din server fungerar effektivt och effektivt genom att tillhandahålla stabil och konsekvent prestanda, måste du eliminera de misstag som ofta orsakas av någon subtilitet i arbetsbelastningen eller konfigurationsfällan.
När datavolymen växer blir den allt mer komplex. Därför är det viktigt att optimera databaserna väl för att leverera en effektiv slutanvändarupplevelse. MySQL prestandajustering är den ultimata lösningen eftersom det kommer att hjälpa till att tillhandahålla lösningar på dessa databasproblem.
MySQL Performance Tuning
I den här artikeln hittar du några användbara tips om hur du använder MySQL-prestandajustering. Detta hjälper dig att få ut det bästa resultatet av din MySQL.
Steg 1:Använd inte MySQL som kö
Utan din insikt kan kö- och köliknande mönster smyga sig in i din applikation. Ett typiskt exempel är att markera e-postmeddelanden som ej skickade, skicka dem och sedan markera dem som skickade. detta är ett vanligt men sällan omärkligt problem som de flesta användare tenderar att ignorera.
De orsakar två stora prestandakomplexiteter:
- De serialiserar din arbetsbelastning och förhindrar därmed att uppgifter slutförs i parallell sekvens. Dessutom resulterar de ofta i en tabell som innehåller arbete i process och historiska data från jobb som bearbetades för länge sedan. Detta saktar vanligtvis ned bearbetningshastigheten och processen.
- Både lägger till latens till applikationen och laddar till MySQL.
Steg 2:Profilera din arbetsbelastning
Att profilera din arbetsbelastning är viktigt eftersom det hjälper dig att förstå hur din server fungerar och den tid den lägger på att bearbeta uppgifter. Det bästa verktyget för att hjälpa dig göra detta är MySQL Enterprise Monitors Query analyzer från Perconas verktygslåda.
Obs! Endast tillgängligt för Linux-användare
Verktygen kan fånga frågorna som körs av servern och returnera en tabell med sorterade uppgifter i minskande ordningsföljd för svarstid.
Profilering av din arbetsbelastning avslöjar de dyraste frågorna för ytterligare justering. Tiden är mest kritisk eftersom det som är viktigt är hur snabbt den slutförs när en fråga skickas.
Profileringsverktygen grupperar också liknande frågor, vilket gör att du kan se de långsamma och snabba frågorna men exekveras många gånger.
Steg 3:Förstå de fyra grundläggande resurserna
CPU, minne, disk och nätverk är de fyra grundläggande resurser som behövs för att en databas ska fungera. Därför kommer databasen sannolikt att fungera dåligt om någon av dessa resurser är överbelastade, svaga eller oregelbundna.
Du bör alltid se till att alla de fyra nämnda resurserna är starka och stabila för att MySQL ska fungera felfritt. Organisationer väljer vanligtvis de servrar med snabba processorer och diskar som kan rymma fler minnesplatser.
Att lägga till minne är ett billigt och enkelt sätt att öka prestandan i storleksordningar, särskilt på diskbundna arbetsbelastningar. Detta kan tyckas orimligt, men många diskar överutnyttjas eftersom det inte finns tillräckligt med minne för att lagra serverns arbetsdata.
Vid felsökning, kontrollera prestandan och användningen av alla fyra resurserna noggrant för att hjälpa dig att fastställa prestandastatistiken för de fyra resurserna. Att övervaka deras prestanda är viktigt eftersom det hjälper användaren att veta vad som bör förbättras eller behöver bytas ut. Du kan prova den här metoden eftersom det är en av de snabbaste metoderna för att lösa prestandaproblem i MYSQL.
Steg 4:Filtrera resultaten efter det billigaste först
Ett utmärkt sätt för optimering är att först göra det billiga, oprecisa arbetet, sedan det hårda, exakta arbetet med de mindre, vilket resulterar i datamängden.
Exempel:
Anta att du letar efter något inom en given radie av en geografisk punkt. Det första verktyget i min programmerares verktygslåda är Haversine {Great circle}-formeln för att beräkna avstånd längs ytan av en sfär.
Problemet med tekniken är att formeln kräver många trigonometriska operationer, som är mycket CPU-känsliga. Som ett resultat tenderar beräkningarna att gå långsamt och få maskinens CPU-användning att skjuta i höjden.
Innan du använder formeln, reducera dina poster till en liten delmängd av summan och trimma den resulterande uppsättningen till en exakt cirkel. Fyrkant som innehåller cirkeln, vare sig det är exakt eller oprecist, är ett enkelt sätt att göra detta. Detta säkerställer att världen utanför torget aldrig drabbas av alla dessa kostsamma trigonometriska funktioner.
Steg 5:Att känna till och förstå de två dödsfällorna för skalbarhet.
Skalbarhet är kanske inte så vag som många tror. Istället finns det exakta matematiska definitioner av skalbarhet uttryckt som ekvationer som belyser varför system inte skalas så bra som de borde.
Den universella skalbarhetslagen är en definition som är praktisk för att uttrycka och kvantifiera systemens skalbarhetsegenskaper. Den förklarar skalningsproblem i termer av serialisering och överhörning, som är de två grundläggande kostnaderna.
Parallella processer som måste stoppas för att något serialiserat ska äga rum är i sig begränsade i sin skalbarhet. Dessutom, om parallella processer behöver kommunicera med varandra för att samordna sitt arbete, begränsar de varandra. Därför är det att föredra att undvika serialisering och överhörning för att din applikation ska kunna skalas snabbt och effektivt.
Steg 6:Fokusera inte för mycket på konfigurationen
Människor lägger för mycket tid på att justera konfigurationer. Resultatet är vanligtvis ingen signifikant förbättring och kan ibland vara mycket skadligt. Standardinställningarna som levereras med MySQL är en storlek passar ingen och dåligt föråldrad behöver du inte konfigurera någonting.
Så det är viktigt att få grunderna rätt och bara ändra inställningar om det behövs. I många fall rekommenderas inte serverjusteringsverktyg eftersom de kan vilseleda användare med motsägelsefull information. Vissa har farliga, felaktiga råd inkodade i dem, som cacheträffförhållanden och formler för minnesförbrukning.
Steg 7:Se upp för pagineringsfrågor
Applikationer som paginerar brukar få servern på knä. Optimering kan ofta hittas i själva det andra användargränssnittet. Till exempel, istället för att visa det exakta antalet sidor i resultaten och länkarna, kan du bara visa en länk till en sida som innehåller den informationen. På så sätt kan du förhindra att folk överbelasta originalsidan.
På frågesidan, istället för att använda offset med limit, kan ytterligare en rad väljas, och när du klickar på "nästa sida" kan du ange den sista raden som startpunkten för nästa uppsättning resultat.
Steg 8:Spara statistiken ivrigt, varna motvilligt
Varning och övervakning är viktiga men vad som händer med det typiska övervakningssystemet är att det börjar skicka falska positiva signaler. Systemadministratörer ställer in regler för e-postfiltrering för att stoppa bruset, och snart blir ditt övervakningssystem värdelöst.
Det är viktigt att fånga och spara alla mätvärden du kan, eftersom du kommer att bli glad över att ha dem när du försöker ta reda på vad som har förändrats i systemet. När ett konstigt problem dyker upp kommer du också att kunna peka på en graf och enkelt spåra en förändring i serverns arbetsbelastning.
Människor brukar varna om saker som buffertförhållandet eller antalet tillfälliga tabeller som skapas per sekund. Problemet är att det inte finns någon rimlig tröskel för ett sådant förhållande. Dessutom är den lämpliga tröskeln olika mellan servrar och från tid till annan när ditt arbete ändras.
Som ett resultat, varna sparsamt och endast under förhållanden som indikerar ett definitivt, handlingsbart problem. Till exempel är ett lågt buffertförhållande inte åtgärdbart, och det indikerar inte heller ett verkligt problem, men en server som inte svarar på ett anslutningsförsök är ett verkligt problem som måste lösas.
Steg 9:Lär dig de tre reglerna för indexering
Detta är det mest missförstådda ämnet i databaser eftersom det finns många sätt att lära sig om hur index fungerar och hur servern använder dem. Index, om de är korrekt utformade, tjänar tre viktiga syften i en databasserver;
- Istället för enstaka rader låter index servern hitta grupper av intilliggande rader. Många tror att syftet med index är att hitta enskilda rader, men att hitta enstaka rader leder till slumpmässiga diskoperationer, vilket gör servern mycket långsam. Att hitta grupper av rader är mycket bättre och intressant än att hitta en rad i taget.
- Det låter också servern undvika sortering genom att läsa raderna i önskad ordning. Att läsa rader, till skillnad från sortering, är mycket snabbare och billigare.
- Index låter även servern tillgodose hela frågor från enbart indexet, vilket undviker behovet av att komma åt surfplattan alls. Detta är på olika sätt känt som covey index eller en index-endast fråga.
Steg 10:Dra nytta av dina kamraters expertis
Skulle du ha något emot att inte göra det ensam? Att fundera över problem och göra det som verkar logiskt och förnuftigt för dig kanske fungerar mest men inte hela tiden. Så istället bygg ett nätverk av MySQL-relaterade resurser som går längre än verktygsuppsättningar och felsökningsguider.
Människor är otroligt kunniga och lurar i e-postlistor, forum och så vidare. Dessutom ger konferenser, mässor och lokala användargruppsevenemang värdefulla möjligheter för att få insikter och bygga relationer med kamrater som kan hjälpa dig.
För de få som letar efter verktyg för att komplettera dessa tips kan du kolla in Percona Configuration Wizard för MySQL och MySQL Percona övervakningsplugin.
Konfigurationsguiden kan hjälpa dig att skapa en baslinje. my.cnf-filen för en ny server som är bättre än exempelfilerna som levereras med servern.
Frågerådgivaren som är överlägsen exempelfilerna som levereras med servern. Rådgivaren kommer att analysera din SQL för att hjälpa till att upptäcka potentiellt destruktiva mönster som sidnumreringsfrågor (tips 7).
Percona övervakningsplugin är uppsättningar av övervaknings- och grafiska plugins som hjälper dig att spara statistik ivrigt och varna motvilligt (steg nr 8). Alla dessa verktyg är fritt tillgängliga.
Fördelar med prestandajustering
Den främsta fördelen är att det låter dig undvika överprovisionering och minska kostnaderna genom att anpassa dina tjänster i rätt storlek. Det ger dig också insikter om huruvida flytta datalagring eller lägga till serverkapacitet kommer att förbättra prestandan eller inte, och i så fall hur mycket det kommer att bli.
När en databas väl är inställd på rätt sätt ger den fördelaktiga prestandaresultat med fantastiska funktioner. Det minskar inte bara oönskad uppgiftsbelastning utan optimerar också MySQL-databasen för snabbare datahämtning.
Andra inställningar kan göra skillnad beroende på din arbetsbelastning eller hårdvara. Målet är att ge dig några MySQL-prestandajusteringar för att snabbt få en förnuftig MySQL-konfiguration utan att spendera för mycket tid på att ändra icke-grundläggande inställningar eller läsa dokumentation för att förstå vilka inställningar som är viktiga för dig.
Slutsats
Sammanfattningsvis erbjuder prestandajustering många fördelar, och det rekommenderas när du arbetar med stora dataområden för att förbättra effektiviteten på din server. Genom att följa tipsen i den här artikeln kommer du att kunna utföra MySQL-prestandajustering på din server och dina databaser bekvämt.