Databasens backend påvirker applikationen, som derefter kan påvirke organisationens ydeevne. Når dette sker, har de ansvarlige en tendens til at ønske en hurtig løsning. Der er mange forskellige veje til at forbedre ydeevnen i MySQL. Som et meget populært valg for mange organisationer, er det ret almindeligt at finde en MySQL-installation med standardkonfigurationen. Dette er dog muligvis ikke passende for din arbejdsbyrde og opsætningsbehov.
I denne blog hjælper vi dig med bedre at forstå din database-arbejdsbyrde og de ting, der kan forårsage skade på den. Viden om, hvordan man bruger begrænsede ressourcer er afgørende for alle, der administrerer databasen, især hvis du kører dit produktionssystem på MySQL DB.
For at sikre, at databasen fungerer som forventet, starter vi med de gratis MySQL-overvågningsværktøjer. Vi vil derefter se på de relaterede MySQL-parametre, du kan justere for at forbedre databaseforekomsten. Vi vil også tage et kig på indeksering som en faktor i databaseydelsesstyring.
For at kunne opnå optimal brug af hardwareressourcer vil vi tage et kig på kerneoptimering og andre vigtige OS-indstillinger. Til sidst vil vi se nærmere på trendy opsætninger baseret på MySQL-replikering, og hvordan det kan undersøges med hensyn til ydeevnelag.
Identifikation af MySQL-ydelsesproblemer
Denne analyse hjælper dig med at forstå din databases sundhed og ydeevne bedre. Værktøjerne nedenfor kan hjælpe med at fange og forstå enhver transaktion, så du kan holde styr på dens ydeevne og ressourceforbrug.
PMM (Percona Monitoring and Management)
Percona Monitoring and Management-værktøj er en open source-samling af værktøjer dedikeret til MySQL, MongoDB og MariaDB-databaser (on-premise eller i skyen). PPM er gratis at bruge, og det er baseret på den velkendte Grafana og Prometheus tidsserie DB. Det giver en grundig tidsbaseret analyse til MySQL. Det tilbyder forudkonfigurerede dashboards, der hjælper med at forstå din database-arbejdsbyrde.
PMM bruger en klient/server-model. Du skal downloade og installere både klienten og serveren. Til serveren kan du bruge Docker Container. Det er lige så nemt som at trække PMM-serverens docker-billede, oprette en container og starte PMM.
Træk PMM-serverbillede
docker pull percona/pmm-server:2
2: Pulling from percona/pmm-server
ab5ef0e58194: Downloading 2.141MB/75.78MB
cbbdeab9a179: Downloading 2.668MB/400.5MB
Opret PMM-beholder
docker create \
-v /srv \
--name pmm-data \
percona/pmm-server:2 /bin/true
Kør container
docker run -d \
-p 80:80 \
-p 443:443 \
--volumes-from pmm-data \
--name pmm-server \
--restart always \
percona/pmm-server:2
Du kan også tjekke, hvordan det ser ud uden en installation. En demo af PMM er tilgængelig her.
Et andet værktøj, der er en del af PMM-værktøjssættet, er Query Analytics (QAN). QAN-værktøj forbliver på toppen af udførelsestiden for forespørgsler. Du kan endda få detaljer om SQL-forespørgsler. Det giver også et historisk overblik over de forskellige parametre, der er kritiske for den optimale ydeevne af en MySQL-databaseserver. Dette hjælper ofte med at forstå, om ændringer i koden kan skade din ydeevne. For eksempel blev en ny kode introduceret uden din viden. En simpel brug ville være at vise aktuelle SQL-forespørgsler og fremhæve problemer for at hjælpe dig med at forbedre ydeevnen af din database.
PMM tilbyder punkt-i-tid og historisk synlighed af MySQL-databasens ydeevne. Dashboards kan tilpasses til dine specifikke krav. Du kan endda udvide et bestemt panel for at finde de oplysninger, du ønsker om en tidligere begivenhed.
Gratis databaseovervågning med ClusterControl
ClusterControl giver overvågning i realtid af hele databaseinfrastrukturen. Det understøtter forskellige databasesystemer startende med MySQL, MariaDB, PerconaDB, MySQL NDB Cluster, Galera Cluster (både Percona og MariaDB), MongoDB, PostgreSQL og TimescaleDB. Overvågnings- og implementeringsmodulerne er gratis at bruge.
ClusterControl består af flere moduler. I den gratis ClusterControl Community Edition kan vi bruge:
Performancerådgivere tilbyder specifik rådgivning om, hvordan man løser database- og serverproblemer, som f.eks. som ydeevne, sikkerhed, logstyring, konfiguration og kapacitetsplanlægning. Driftsrapporter kan bruges til at sikre overholdelse på tværs af hundredvis af tilfælde. Overvågning er dog ikke ledelse. ClusterControl har funktioner som sikkerhedskopiering, automatiseret gendannelse/failover, implementering/skalering, rullende opgraderinger, sikkerhed/kryptering, belastningsbalancestyring og så videre.
Overvågning og rådgivere
ClusterControl Community Edition tilbyder gratis databaseovervågning, som giver et samlet overblik over alle dine implementeringer på tværs af datacentre og lader dig bore ned i individuelle noder. I lighed med PMM kan vi finde dashboards baseret på realtidsdata. Det er for at vide, hvad der sker nu, med højopløselige metrics for bedre nøjagtighed, forudkonfigurerede dashboards og en bred vifte af tredjepartsunderretningstjenester til advarsel.
On-premises og cloud-systemer kan overvåges og administreres fra ét enkelt punkt . Intelligente sundhedstjek er implementeret for distribuerede topologier, for eksempel detektering af netværksopdeling ved at udnytte belastningsbalancerens visning af databasenoderne.
ClusterControl Workload Analytics i en af overvågningskomponenterne, som nemt kan hjælpe dig med at spore dine databaseaktiviteter. Det giver klarhed i transaktioner/forespørgsler fra applikationer. Ydeevneundtagelser forventes aldrig, men de forekommer og er nemme at gå glip af i et hav af data. Outlier-opdagelse vil få alle forespørgsler, der pludselig begynder at udføre meget langsommere end normalt. Den sporer det glidende gennemsnit og standardafvigelsen for forespørgselsudførelsestider og registrerer/advarer, når forskellen mellem værdien overstiger middelværdien med to standardafvigelser.
Som vi kan se fra billedet nedenfor, var vi i stand til at fange nogle forespørgsler, der imellem en dag har en tendens til at ændre udførelsestidspunktet på et bestemt tidspunkt.
For at installere ClusterControl klik her og download installationsscriptet. Installationsscriptet tager sig af de nødvendige installationstrin.
Du bør også tjekke ClusterControl-demoen for at se den i aktion.
Du kan også få et docker-billede med ClusterControl.
$ docker pull severalnines/clustercontrol
For mere information om dette, følg denne artikel.
MySQL-databaseindeksering
Uden et indeks resulterer kørsel af den samme forespørgsel i en scanning af hver række for de nødvendige data. Oprettelse af et indeks på et felt i en tabel skaber ekstra datastruktur, som er feltværdien, og en pegepind til den post, den relaterer til. Med andre ord producerer indeksering en genvej med meget hurtigere forespørgselstider på ekspansive tabeller. Uden et indeks skal MySQL begynde med den første række og derefter læse hele tabellen igennem for at finde de relevante rækker.
Generelt set fungerer indeksering bedst på de kolonner, der er genstand for WHERE-sætningerne i dine almindeligt udførte forespørgsler.
Tabeller kan have flere indekser. Håndtering af indekser vil uundgåeligt kræve at være i stand til at liste de eksisterende indekser på en tabel. Syntaksen for at se et indeks er nedenfor.
Sådan tjekker du indekser på MySQL-tabelkørsel:
SHOW INDEX FROM table_name;
Da indekser kun bruges til at fremskynde søgningen efter et matchende felt i posterne, er det naturligt, at indeksering af felter, der kun bruges til output, simpelthen vil være spild af diskplads. En anden bivirkning er, at indekser kan udvide indsættelses- eller sletningsoperationer, og bør derfor undgås, når de ikke er nødvendige.
MySQL Database Swappiness
På servere, hvor MySQL er den eneste tjeneste, der kører, er det en god praksis at indstille vm.swapiness =1. Standardindstillingen er sat til 60, hvilket ikke er passende for et databasesystem.
vi /etc/sysctl.conf
vm.swappiness = 1
Transparente enorme sider
Hvis du kører din MySQL på RedHat, skal du sørge for, at Transparent Huge Pages er deaktiveret.
Dette kan kontrolleres ved kommando:
cat /proc/sys/vm/nr_hugepages
0
(0 betyder, at gennemsigtige enorme sider er deaktiveret.)
MySQL I/O Scheduler
I de fleste distributioner bør noop eller deadline I/O-planlæggere være aktiveret som standard. Kør for at kontrollere det
cat /sys/block/sdb/queue/scheduler
MySQL-filsystemindstillinger
Det anbefales at bruge journalførte filsystemer som xfs, ext4 eller btrfs. MySQL fungerer fint med alt det, og forskellene vil sandsynligvis komme med understøttet maksimal filstørrelse.
- XFS (maksimal filsystemstørrelse 8EB, maksimal filstørrelse 8EB)
- XT4 (maksimal filsystemstørrelse 8EB, maksimal filstørrelse 16TB)
- BTRFS (maksimal filsystemstørrelse 16EB, maksimal filstørrelse 16EB)
Standardindstillingerne for filsystemet bør gælde fint.
NTP-dæmon
Det er en god bedste praksis at installere NTP-tidsserverdæmon på databaseservere. Brug en af følgende systemkommandoer.
#Red Hat
yum install ntp
#Debian
sudo apt-get install ntp
Konklusion
Det hele er til del et. I den næste artikel fortsætter vi med MySQL-variables operativsystemindstillinger og nyttige forespørgsler til at indsamle databaseydeevnestatus.