sql >> Database >  >> RDS >> Mysql

10 handige tips voor het afstemmen van MySQL-prestaties

Net als alle andere databases kan MySQL ingewikkeld zijn en kan het in een oogwenk stoppen met al uw bedrijven en taken op het spel te zetten. Veelvoorkomende fouten liggen echter ten grondslag aan de meeste problemen die de prestaties beïnvloeden.

Om ervoor te zorgen dat uw server efficiënt en effectief werkt door stabiele en consistente prestaties te leveren, moet u de fouten elimineren die vaak worden veroorzaakt door enige subtiliteit in de werkbelasting of configuratieval.

Naarmate het datavolume groeit, wordt het steeds complexer. Daarom is het essentieel om de databases goed te optimaliseren om een ​​efficiënte eindgebruikerservaring te leveren. Het afstemmen van MySQL-prestaties is de ultieme oplossing omdat het helpt bij het bieden van oplossingen voor deze databaseproblemen.

MySQL-prestaties afstemmen

In dit artikel vindt u enkele handige tips voor het gebruik van MySQL-prestatieafstemming. Dit zal u helpen de beste prestaties uit uw MySQL te halen.

Stap 1:Gebruik MySQL niet als wachtrij

Zonder uw realisatie kunnen wachtrijen en wachtrijachtige patronen uw applicatie binnensluipen. Een typisch voorbeeld is het markeren van e-mails als niet-verzonden, verzenden en vervolgens markeren als verzonden. dit is een veelvoorkomend maar zelden onopgemerkt probleem dat de meeste gebruikers geneigd zijn te negeren.

Ze veroorzaken twee grote prestatiecomplexiteiten:

  1. Ze serialiseren uw werklast en voorkomen zo dat taken parallel worden uitgevoerd. Bovendien resulteren ze vaak in een tabel met onderhanden werk en historische gegevens van opdrachten die lang geleden zijn verwerkt. Dit vertraagt ​​over het algemeen de verwerkingssnelheid en het proces.
  2. Beide voegen latentie toe aan de applicatie en laden naar MySQL.

Stap 2:Profileer uw werklast

Het profileren van uw werklast is essentieel, omdat het u helpt te begrijpen hoe uw server werkt en hoeveel tijd deze aan het verwerken van taken besteedt. De beste tool om u hierbij te helpen is MySQL Enterprise Monitors Query-analysator uit de Percona-toolkit.

Opmerking: Alleen beschikbaar voor Linux-gebruikers

De tools kunnen de query's die door de server worden uitgevoerd vastleggen en een tabel met gesorteerde taken retourneren om de volgorde van de responstijd te verkorten.

Door uw werkbelasting te profileren, worden de duurste query's voor verdere afstemming blootgelegd. Tijd is van het grootste belang, want het gaat erom hoe snel het is voltooid bij het indienen van een vraag.

De profileringstools groeperen ook soortgelijke zoekopdrachten, waardoor je de langzame en de snelle zoekopdrachten kunt zien, maar die vaak worden uitgevoerd.

Stap 3:De vier fundamentele bronnen begrijpen

De CPU, het geheugen, de schijf en het netwerk zijn de vier fundamentele bronnen die nodig zijn om een ​​database te laten functioneren. Daarom zal de database waarschijnlijk slecht presteren als een van deze bronnen overbelast, zwak of onregelmatig is.

U moet er altijd voor zorgen dat alle genoemde vier bronnen sterk en stabiel zijn zodat MySQL foutloos kan werken. Organisaties kiezen meestal die servers met snelle CPU's en schijven die meer geheugenslots kunnen bevatten.

Het toevoegen van geheugen is een goedkope en gemakkelijke manier om de prestaties in orde van grootte te verhogen, vooral bij schijfgebonden workloads. Dit lijkt misschien onredelijk, maar veel schijven worden overbelast omdat er niet genoeg geheugen is om de werkende set gegevens van de server te bewaren.

Controleer bij het oplossen van problemen de prestaties en het gebruik van alle vier de bronnen zorgvuldig om de prestatiestatistieken van de vier bronnen te helpen bepalen. Het monitoren van hun prestaties is belangrijk omdat het de gebruiker helpt te weten wat er moet worden verbeterd of moet worden vervangen. U kunt deze methode uitproberen, aangezien het een van de snelste methoden is om prestatieproblemen in MYSQL op te lossen.

Stap 4:Filter de resultaten op de goedkoopste eerst

Een uitstekende manier voor optimalisatie is om eerst het goedkope, onnauwkeurige werk te doen en vervolgens het harde, precieze werk aan het kleinere, wat resulteert in de dataset.

Voorbeeld:

Stel dat u iets zoekt binnen een bepaalde straal van een geografisch punt. Het eerste gereedschap in de gereedschapskist van mijn programmeur is de Haversine {Grote cirkel}-formule voor het berekenen van de afstand langs het oppervlak van een bol.

Het probleem met de techniek is dat de formule veel trigonometrische bewerkingen vereist, die erg CPU-gevoelig zijn. Dientengevolge hebben de berekeningen de neiging traag te verlopen en het CPU-gebruik van de machine omhoog te schieten.

Voordat u de formule gebruikt, moet u uw records verkleinen tot een kleine subset van het totaal en de resulterende set inkorten tot een precieze cirkel. Een vierkant dat de cirkel bevat, of het nu precies of onnauwkeurig is, is een gemakkelijke manier om dit te doen. Dit zorgt ervoor dat de wereld buiten het plein nooit wordt geraakt door al die kostbare trigonometrische functies.

Stap 5:De twee dodelijke vallen voor schaalbaarheid kennen en begrijpen.

Schaalbaarheid is misschien niet zo vaag als velen denken. In plaats daarvan zijn er nauwkeurige wiskundige definities van schaalbaarheid, uitgedrukt als vergelijkingen die aangeven waarom systemen niet zo goed schalen als zou moeten.

De universele schaalbaarheidswet is een definitie die handig is bij het uitdrukken en kwantificeren van de schaalbaarheidskenmerken van systemen. Het verklaart schaalproblemen in termen van serialisatie en overspraak, de twee fundamentele kosten.

Parallelle processen die moeten stoppen voordat iets geserialiseerd kan plaatsvinden, zijn inherent beperkt in hun schaalbaarheid. Bovendien, als parallelle processen met elkaar moeten communiceren om hun werk te coördineren, beperken ze elkaar. Daarom verdient het de voorkeur om serialisatie en overspraak te vermijden, zodat uw toepassing snel en efficiënt kan worden geschaald.

Stap 6:Focus niet te veel op configuratie

Mensen besteden te veel tijd aan het aanpassen van configuraties. Het resultaat is meestal geen significante verbetering en kan soms zeer schadelijk zijn. De standaardinstellingen die bij MySQL worden geleverd, zijn one size fits none en sterk verouderd. U hoeft niets te configureren.

Het is dus essentieel om de basis goed te krijgen en instellingen alleen te wijzigen als dat nodig is. In veel gevallen worden hulpprogramma's voor het afstemmen van servers niet aanbevolen omdat ze gebruikers kunnen misleiden met tegenstrijdige informatie. Sommige bevatten gevaarlijk, onnauwkeurig advies, zoals cache-hit-ratio's en formules voor geheugenverbruik.

Stap 7:Pas op voor pagineringsquery's

Toepassingen die pagineren brengen de server meestal op de knieën. Optimalisaties zijn vaak te vinden in de andere gebruikersinterface zelf. In plaats van bijvoorbeeld het exacte aantal pagina's in de resultaten en links weer te geven, kunt u alleen een link weergeven naar een pagina die die informatie bevat. Zo kun je voorkomen dat mensen de originele pagina overbelasten.

Aan de kant van de zoekopdracht, in plaats van offset met limiet te gebruiken, kan nog een rij worden geselecteerd, en wanneer u op 'volgende pagina' klikt, kunt u die laatste rij aanwijzen als het startpunt voor de volgende reeks resultaten.

Stap 8:Bewaar de statistieken gretig, waarschuw met tegenzin

Alarmering en monitoring zijn essentieel, maar wat er met het typische monitoringsysteem gebeurt, is dat het valse positieven begint te verzenden. Systeembeheerders stellen regels voor het filteren van e-mail in om de ruis te stoppen, en al snel wordt uw monitoringsysteem onbruikbaar.

Het is belangrijk om alle mogelijke statistieken vast te leggen en op te slaan, omdat u ze graag zult hebben wanneer u probeert te achterhalen wat er in het systeem is veranderd. Wanneer zich een vreemd probleem voordoet, kunt u naar een grafiek verwijzen en eenvoudig een verandering in de serverwerkbelasting traceren.

Mensen waarschuwen meestal voor zaken als de buffer hit ratio of het aantal tijdelijke tabellen dat per seconde wordt aangemaakt. Het probleem is dat er geen redelijke drempel is voor een dergelijke verhouding. Bovendien verschilt de geschikte drempel tussen servers en van tijd tot tijd als uw werk verandert.

Waarschuw daarom spaarzaam en alleen bij omstandigheden die wijzen op een duidelijk, uitvoerbaar probleem. Een lage bufferhit-ratio is bijvoorbeeld niet uitvoerbaar en duidt ook niet op een echt probleem, maar een server die niet reageert op een verbindingspoging is een echt probleem dat moet worden opgelost.

Stap 9:Leer de drie regels van indexeren

Dit is het meest onbegrepen onderwerp in databases, omdat er veel manieren zijn om te leren hoe indexen werken en hoe de server ze gebruikt. Indexen dienen, indien goed ontworpen, drie belangrijke doelen in een databaseserver;

  1. In plaats van enkele rijen, laten indexen de server toe om groepen aangrenzende rijen te vinden. Veel mensen denken dat het doel van indexen is om individuele rijen te vinden, maar het vinden van enkele rijen leidt tot willekeurige schijfbewerkingen, waardoor de server erg traag wordt. Het vinden van groepen rijen is veel beter en interessanter dan het één voor één vinden van rijen.
  2. Het laat de server ook het sorteren vermijden door de rijen in de gewenste volgorde te lezen. Het lezen van rijen is, in tegenstelling tot sorteren, veel sneller en goedkoper.
  3. Indexen stellen de server ook in staat om volledige zoekopdrachten van alleen de index te bevredigen, waardoor de noodzaak om toegang tot de tablet te vermijden. Dit staat ook wel bekend als covey-index of een zoekopdracht met alleen index.

Stap 10:Maak gebruik van de expertise van uw collega's

Zou je het niet erg vinden om het alleen te doen? Over problemen puzzelen en doen wat u logisch en verstandig lijkt, werkt misschien het meest, maar niet altijd. Bouw in plaats daarvan een netwerk van MySQL-gerelateerde bronnen die verder gaan dan toolsets en handleidingen voor probleemoplossing.

Mensen zijn ongelooflijk goed geïnformeerd op de loer in mailinglijsten, forums, enzovoort. Daarnaast bieden conferenties, beurzen en lokale evenementen voor gebruikersgroepen waardevolle mogelijkheden om inzichten te krijgen en relaties op te bouwen met collega's die u kunnen helpen.

Voor de weinigen die op zoek zijn naar tools om deze tips aan te vullen, kunt u de Percona-configuratiewizard voor MySQL en MySQL Percona-monitoringplug-ins bekijken.

De configuratiewizard kan u helpen bij het genereren van een baseline. my.cnf-bestand voor een nieuwe server die superieur is aan de voorbeeldbestanden die bij de server worden geleverd.

De query-adviseur die superieur is aan de voorbeeldbestanden die bij de server worden geleverd. De adviseur analyseert uw SQL om mogelijk destructieve patronen zoals pagineringsquery's te helpen detecteren (tip 7).

Percona monitoring-plug-ins zijn sets met monitoring- en grafische plug-ins die u helpen statistieken gretig op te slaan en met tegenzin te waarschuwen (stap nr. 8). Al deze tools zijn gratis beschikbaar.

Voordelen van prestatieafstemming

Het belangrijkste voordeel is dat u overprovisioning kunt voorkomen en de kosten kunt verlagen door uw services op de juiste manier aan te passen. Het geeft u ook inzicht in of het verplaatsen van gegevensopslag of het toevoegen van servercapaciteit de prestaties zal verbeteren of niet, en zo ja, hoeveel dit zal zijn.

Als een database eenmaal correct is afgesteld, geeft deze gunstige prestatieresultaten met geweldige functionaliteiten. Het vermindert niet alleen ongewenste taakbelasting, maar optimaliseert ook de MySQL-database voor sneller ophalen van gegevens.

Andere instellingen kunnen een verschil maken, afhankelijk van uw werklast of hardware. Het doel is om u een paar MySQL-prestaties af te stemmen om snel een gezonde MySQL-configuratie te krijgen zonder al te veel tijd te besteden aan het wijzigen van niet-basisinstellingen of het lezen van documentatie om te begrijpen welke instellingen belangrijk voor u zijn.

Conclusie

Concluderend, prestatieafstemming biedt veel voordelen, en het wordt aanbevolen bij het werken met grote hoeveelheden gegevens om de efficiëntie van uw server te verbeteren. Door de tips in dit artikel te volgen, kunt u de MySQL-prestaties gemakkelijk afstemmen op uw server en databases.


  1. Rails-rapporten kunnen geen kolom vinden die er is

  2. Help bij MySQL-updatecase

  3. Hoe JDBC-configuratie te laden vanuit het eigenschappenbestand Voorbeeld

  4. Meerdere rijen invoegen in Oracle