Come tutti gli altri database, MySQL può essere complicato e può smettere in un attimo di mettere in gioco tutte le tue attività e attività. Tuttavia, gli errori comuni sono alla base della maggior parte dei problemi che influiscono sulle prestazioni.
Per garantire che il tuo server funzioni in modo efficiente ed efficace fornendo prestazioni stabili e coerenti, devi eliminare gli errori spesso causati da alcune sottigliezze nel carico di lavoro o nella trappola della configurazione.
Man mano che il volume dei dati cresce, diventa sempre più complesso. Pertanto, è essenziale ottimizzare bene i database per offrire un'esperienza utente finale efficiente. L'ottimizzazione delle prestazioni di MySQL è la soluzione definitiva in quanto aiuterà a fornire soluzioni a questi problemi di database.
Regolazione delle prestazioni di MySQL
In questo articolo, troverai alcuni suggerimenti utili su come utilizzare l'ottimizzazione delle prestazioni di MySQL. Questo ti aiuterà a ottenere le migliori prestazioni dal tuo MySQL.
Passaggio 1:non utilizzare MySQL come coda
Senza la tua realizzazione, i modelli di coda e simili a code possono intrufolarsi nella tua applicazione. Un tipico esempio è contrassegnare le e-mail come non inviate, inviarle e quindi contrassegnarle come inviate. questo è un problema comune ma raramente impercettibile che la maggior parte degli utenti tende a ignorare.
Causano due principali complessità di prestazioni:
- Serializza il tuo carico di lavoro, impedendo così il completamento delle attività in sequenza parallela. Inoltre, spesso generano una tabella che contiene il lavoro in corso e i dati storici di lavori che sono stati elaborati molto tempo fa. Questo generalmente rallenta la velocità di elaborazione e il processo.
- Entrambi aggiungono latenza all'applicazione e caricano su MySQL.
Fase 2:profila il tuo carico di lavoro
La profilazione del carico di lavoro è essenziale in quanto ti aiuta a capire come funziona il tuo server e il tempo che dedica all'elaborazione delle attività. Lo strumento migliore per aiutarti in questo è MySQL Enterprise Monitors Query Analyzer del toolkit Percona.
Nota: Disponibile solo per utenti Linux
Gli strumenti possono acquisire le query eseguite dal server e restituire una tabella di attività ordinate diminuendo l'ordine del tempo di risposta.
La profilazione del carico di lavoro espone le query più costose per un'ulteriore ottimizzazione. Il tempo è più importante perché ciò che è importante è la rapidità con cui viene completato quando si esegue una query.
Gli strumenti di profilazione raggruppano anche query simili, il che ti consente di vedere le query lente e quelle veloci ma vengono eseguite molte volte.
Fase 3:Comprendere le quattro risorse fondamentali
La CPU, la memoria, il disco e la rete sono le quattro risorse fondamentali necessarie per il funzionamento di un database. Pertanto, è probabile che il database funzioni male se una di queste risorse è sovraccarica, debole o irregolare.
Dovresti sempre assicurarti che tutte e quattro le risorse menzionate siano solide e stabili per consentire a MySQL di funzionare in modo impeccabile. Le organizzazioni di solito scelgono quei server con CPU e dischi veloci che possono ospitare più slot di memoria.
L'aggiunta di memoria è un modo semplice ed economico per aumentare le prestazioni di ordini di grandezza, in particolare sui carichi di lavoro legati al disco. Potrebbe sembrare irragionevole, ma molti dischi sono sovrautilizzati poiché non c'è memoria sufficiente per contenere il set di dati di lavoro del server.
Durante la risoluzione dei problemi, controllare attentamente le prestazioni e l'utilizzo di tutte e quattro le risorse per determinare le statistiche sulle prestazioni delle quattro risorse. Il monitoraggio delle loro prestazioni è importante poiché aiuta l'utente a sapere cosa dovrebbe essere migliorato o deve essere sostituito. Puoi provare questo metodo poiché è uno dei metodi più rapidi per risolvere i problemi di prestazioni in MYSQL.
Fase 4:filtra i risultati in base al più economico per primo
Un ottimo modo per ottimizzare è fare prima il lavoro poco costoso e impreciso, poi il lavoro duro e preciso su quello più piccolo, ottenendo così il set di dati.
Esempio:
Supponiamo di cercare qualcosa entro un determinato raggio da un punto geografico. Il primo strumento nella cassetta degli attrezzi del mio programmatore è la formula Haversine {Great circle} per calcolare la distanza lungo la superficie di una sfera.
Il problema con la tecnica è che la formula richiede molte operazioni trigonometriche, che sono molto sensibili alla CPU. Di conseguenza, i calcoli tendono a essere lenti e fanno salire alle stelle l'utilizzo della CPU della macchina.
Prima di utilizzare la formula, riduci i tuoi record a un piccolo sottoinsieme del totale e ritaglia il set risultante su un cerchio preciso. Il quadrato che contiene il cerchio, in modo preciso o impreciso, è un modo semplice per farlo. Ciò garantisce che il mondo fuori dalla piazza non venga mai colpito da tutte quelle costose funzioni trigonometriche.
Fase 5:Conoscere e comprendere le due trappole mortali della scalabilità.
La scalabilità potrebbe non essere così vaga come molti credono. Al contrario, esistono definizioni matematiche precise di scalabilità espresse sotto forma di equazioni che evidenziano perché i sistemi non scalano bene come dovrebbero.
La legge di scalabilità universale è una definizione utile per esprimere e quantificare le caratteristiche di scalabilità dei sistemi. Spiega i problemi di ridimensionamento in termini di serializzazione e diafonia, che sono i due costi fondamentali.
I processi paralleli che devono interrompersi affinché avvenga qualcosa di serializzato sono intrinsecamente limitati nella loro scalabilità. Inoltre, se i processi paralleli devono comunicare tra loro per coordinare il proprio lavoro, si limitano a vicenda. Pertanto, è preferibile evitare la serializzazione e il crosstalk per consentire all'applicazione di scalare in modo rapido ed efficiente.
Fase 6:non concentrarti troppo sulla configurazione
Le persone passano troppo tempo a modificare le configurazioni. Il risultato di solito non è un miglioramento significativo e talvolta può essere molto dannoso. Le impostazioni predefinite fornite con MySQL non sono di taglia unica e sono decisamente obsolete, non è necessario configurare nulla.
Quindi, è essenziale avere le basi giuste e modificare le impostazioni solo se necessario. In numerosi casi, gli strumenti di ottimizzazione del server non sono consigliati perché potrebbero fuorviare gli utenti con informazioni contraddittorie. Alcuni hanno consigli pericolosi e imprecisi codificati al loro interno come rapporti di hit della cache e formule di consumo di memoria.
Passaggio 7:fai attenzione alle query di impaginazione
Le applicazioni che impaginano di solito mettono in ginocchio il server. Le ottimizzazioni si trovano spesso nell'altra interfaccia utente stessa. Ad esempio, invece di mostrare il numero esatto di pagine nei risultati e nei collegamenti, puoi mostrare solo un collegamento a una pagina che contiene tali informazioni. Pertanto, puoi impedire alle persone di sovraccaricare la pagina originale.
Sul lato della query, invece di utilizzare l'offset con limite, è possibile selezionare un'altra riga e, quando si fa clic su "pagina successiva", è possibile designare l'ultima riga come punto di partenza per la successiva serie di risultati.
Fase 8:salva le statistiche con impazienza, avvisa con riluttanza
L'avviso e il monitoraggio sono essenziali, ma ciò che accade al tipico sistema di monitoraggio è che inizia a inviare falsi positivi. Gli amministratori di sistema impostano regole di filtraggio e-mail per fermare il rumore e presto il tuo sistema di monitoraggio diventa inutile.
È importante acquisire e salvare tutte le metriche possibili perché sarai felice di averle quando cercherai di capire cosa è cambiato nel sistema. Inoltre, quando si verifica uno strano problema, sarai in grado di puntare a un grafico e tracciare facilmente un cambiamento nel carico di lavoro del server.
Le persone di solito avvisano su cose come il rapporto di hit del buffer o il numero di tabelle temporanee create al secondo. Il problema è che non esiste una soglia ragionevole per un tale rapporto. Inoltre, la soglia adatta è diversa tra i server e di volta in volta al variare del tuo lavoro.
Di conseguenza, avvisare con parsimonia e solo in caso di condizioni che indicano un problema definito e perseguibile. Ad esempio, un basso tasso di hit del buffer non è perseguibile, né indica un problema reale, ma un server che non risponde a un tentativo di connessione è un problema reale che deve essere risolto.
Fase 9:impara le tre regole dell'indicizzazione
Questo è l'argomento più frainteso nei database perché ci sono molti modi per imparare come funzionano gli indici e come il server li usa. Gli indici, se progettati correttamente, servono tre scopi importanti in un server di database;
- Invece di singole righe, gli indici consentono al server di trovare gruppi di righe adiacenti. Molte persone pensano che lo scopo degli indici sia quello di trovare singole righe, ma la ricerca di singole righe porta a operazioni casuali sul disco, rendendo il server molto lento. Trovare gruppi di righe è molto meglio e interessante che trovare le righe una alla volta.
- Consente inoltre al server di evitare l'ordinamento leggendo le righe nell'ordine desiderato. La lettura delle righe, a differenza dell'ordinamento, è molto più veloce e meno costosa.
- Gli indici consentono inoltre al server di soddisfare intere query dal solo indice, evitando la necessità di accedere al tablet. Questo è noto in vari modi come indice covey o query di solo indice.
Fase 10:sfrutta l'esperienza dei tuoi colleghi
Ti dispiacerebbe non farlo da solo? Rimuginare sui problemi e fare ciò che ti sembra logico e sensato potrebbe funzionare di più, ma non sempre. Quindi, crea una rete di risorse relative a MySQL che vada oltre i set di strumenti e le guide per la risoluzione dei problemi.
Le persone sono incredibilmente informate in agguato nelle mailing list, nei forum e così via. Inoltre, conferenze, fiere ed eventi di gruppi di utenti locali offrono preziose opportunità per ottenere informazioni dettagliate e costruire relazioni con colleghi che possono aiutarti.
Per i pochi che cercano strumenti per integrare questi suggerimenti, puoi dare un'occhiata alla Configurazione guidata di Percona per MySQL e ai plug-in di monitoraggio MySQL Percona.
La procedura guidata di configurazione può aiutarti a generare una linea di base. my.cnf per un nuovo server superiore ai file di esempio forniti con il server.
L'advisor query superiore ai file di esempio forniti con il server. L'advisor analizzerà il tuo SQL per rilevare modelli potenzialmente distruttivi come le query di impaginazione (suggerimento 7).
I plug-in di monitoraggio Percona sono insiemi di plug-in di monitoraggio e grafica che ti aiutano a salvare le statistiche con entusiasmo e avvisare con riluttanza (passaggio n. 8). Tutti questi strumenti sono disponibili gratuitamente.
Vantaggi dell'ottimizzazione delle prestazioni
Il vantaggio principale è che ti consente di evitare l'overprovisioning e di ridurre i costi dimensionando correttamente i tuoi servizi. Fornisce inoltre informazioni dettagliate sul fatto che lo spostamento dell'archiviazione dei dati o l'aggiunta di capacità del server migliorerà o meno le prestazioni e, in tal caso, quanto sarà.
Una volta che un database è stato ottimizzato correttamente, offre risultati di prestazioni vantaggiosi con grandi funzionalità. Non solo riduce il carico di attività indesiderate, ma ottimizza anche il database MySQL per un recupero più rapido dei dati.
Altre impostazioni possono fare la differenza a seconda del carico di lavoro o dell'hardware. L'obiettivo è fornirti alcune regolazioni delle prestazioni di MySQL per ottenere rapidamente una corretta configurazione MySQL senza perdere troppo tempo a modificare impostazioni non di base o leggere la documentazione per capire quali impostazioni sono importanti per te.
Conclusione
In conclusione, l'ottimizzazione delle prestazioni offre molti vantaggi ed è consigliata quando si utilizzano grandi quantità di dati per migliorare l'efficienza del server. Seguendo i suggerimenti forniti in questo articolo, sarai in grado di eseguire comodamente l'ottimizzazione delle prestazioni di MySQL sul tuo server e database.