10 Cele mai bune practici pentru optimizarea lucrului cu MySQL, MySQL

1. LIMIT 1 Când doriți să eliminați din tabelul de un șir unic

Uneori, crearea unei cereri, poate știți deja, aveți nevoie doar de un singur rând unic în tabel. Puteți crea o selecție de înregistrări unice. Sau puteți rula doar o verificare cu privire la existența oricărei cantități de înregistrări care îndeplinesc starea dumneavoastră.

În astfel de cazuri, utilizarea de LIMIT 1 poate crește în mod semnificativ productivitatea:

2. Optimizarea unei baze de date folosind procesarea memoriei cache de interogare

Cele mai multe servere MySQL suporta interogare cache. Aceasta este una dintre cele mai eficiente metode de creștere a productivității cu care motorul de baze de date gestionează fără probleme.

În cazul în care aceeași interogare este executat de mai multe ori, rezultatul va fi obținut din cache. Fără a fi nevoie să proceseze din nou toate tabelele. Acest lucru accelerează foarte mult procesul.

3. Indexarea câmpurile de căutare

Indicii sunt proiectate nu numai pentru a atribui cheie primară sau unică. Dacă tabelul are coloane pe care le efectuați o căutare, acestea sunt aproape obligatorii pentru a fi indexate.

După cum vă puteți imagina, această regulă se aplică și la o parte din șirul de căutare: cum ar fi „L ast_name LIKE«%»“. Atunci când se efectuează o căutare pe începutul șirului, MySQL poate fi folosit pentru această indexare coloană.

De asemenea, trebuie să înțeleagă ce fel de cereri nu pot utiliza indicii regulate. De exemplu, atunci când căutați un cuvânt (de exemplu, „UNDE POST_CONTENT LIKE '%% roșii“), utilizarea indicelui regulat nu va da nimic. În acest caz, ar fi mai bine să utilizați un MySQL de căutare cu privire la respectarea integrală sau pentru a crea propriul index.

4. Index și utilizarea coloanei de același tip, prin combinarea

În cazul în care cererea dumneavoastră conține o mulțime de cereri de asociere, trebuie să se asigure că coloanele din cele două tabele pe care le asamblează, indexate. Acest lucru afectează optimizarea MySQL combinație de afaceri interne.

În plus, coloanele, care sunt combinate, ar trebui să fie de același tip. De exemplu, dacă se combină un tip coloană zecimala a unei coloane de masă și un INT de la un alt, MySQL nu va fi capabil să utilizeze cel puțin unul dintre indicii.

Chiar și codificarea caracterelor trebuie să fie de același tip pentru rândurile respective se alăture coloanei.

5. Dacă este posibil, nu utilizați interogarea SELECT *

Cele mai multe date în tabel este procesat la cerere, mai lent interogarea în sine. Timpul se scurge pentru operațiunile de disc. Mai mult, atunci când serverul de baze de date este împărțit la serverul de web, există întârzieri în transmiterea datelor între servere.

6. Vă rugăm să nu folosiți metoda de sortare ORDER BY RAND ()

Aceasta este una dintre aceste metode, care la început par a fi destul de bun, și mulți programatori novice se încadrează pentru momeala. Nu ai nici o idee despre ce fel de capcană ei înșiși aranja în prezent, la fel ca doar incepand de a utiliza acest filtru de interogare.

Dacă într-adevăr nevoie pentru a rezolva unele dintre liniile din rezultatele de căutare, atunci există modalități mult mai bune de a face acest lucru. Să presupunem că aveți nevoie să adăugați un cod suplimentar la cerere, dar din cauza aceasta capcana, nu se poate face, ceea ce ar reduce eficiența prelucrării datelor, în măsura în care, ca baza de date va crește în dimensiune.

Problema care se va efectua MySQL RAND () operare (care utilizează resursele de calcul ale serverului) înainte de sortare pentru fiecare rând din tabel. În același timp, selectat va fi doar o singură linie.

Deci, alegeți un număr mai mic de rezultate de căutare, și apoi să fie capabil să aplice metoda limita descrisă la punctul 1.

7. Utilizați coloanele de tip ENUM, în loc de VARCHAR

Dacă aveți un câmp care conține un număr de valori diferite de un singur tip, în loc de o coloană VARCHAR este mai bine să utilizați ENUM. De exemplu, poate fi o coloana „Stare“, care conține doar valorile, cum ar fi „activ“, „inactiv“, „anticipare“, „expirat“, etc.

Există chiar posibilitatea de a stabili un scenariu în care MySQL va „oferta“ pentru a schimba structura tabelului. Când aveți un tip de câmp VARCHAR, sistemul poate recomanda în mod automat pentru a schimba formatul coloanei pentru ENUM. Acest lucru se poate face prin apelarea PROCEDURA ANALIZAȚI funcția ().

8. partiționare verticală (split)

partiționare verticală reprezintă un proces în care o structură de tabel este împărțită pe verticală din motive de optimizare a bazei de date.

Astfel, tabelul cu principalii utilizatori vor scădea semnificativ în dimensiune. Și, după cum știți, mese mai mici sunt procesate mai repede.

Exemplul 2: Ați în tabel, există «LAST_LOGIN» (ultima conectare). Acesta este actualizat de fiecare dată când utilizatorul se conectează cu numele de utilizator. Dar fiecare tabel de schimbare stocate în memoria cache de interogare la masa, care este stocat pe disc. Puteți muta acest câmp într-un alt tabel, pentru a reduce numărul de accesări pentru principalele dvs. de utilizatori de masă.

Cu toate acestea, trebuie să fie sigur că ambele tabele sunt întoarse după partiția nu va fi utilizată în viitor, cu aceeași frecvență. În caz contrar, se va reduce în mod semnificativ performanța.

9. coloane mai mici - mai rapid

Pentru motoarele de baze de date de date spațiu pe disc, probabil, cel mai mare strangulare. Prin urmare, stochează informații mai compact, de regulă, este util în termeni de performanță. Acest lucru reduce numărul de accesări pe disc.

În MySQL Docs a stabilit un număr de cerințe pentru depozitarea diferitelor tipuri de date. În cazul în care este de așteptat ca masa nu va conține prea multe înregistrări, nu există nici un motiv pentru a menține domeniile-cheie primare de tip INT, MEDIUMINT, SMALLINT. și, în unele cazuri, chiar TINYINT. În cazul în care formatul de dată nu este nevoie să te timp (ceas. Minut), apoi utilizați câmpul DATA tip în loc de un DATETIME.

Dar, totuși, asigurați-vă că, în viitor, te-ai lăsat suficient spațiu pentru dezvoltare. În caz contrar, la un moment dat s-ar putea întâmpla ca un fel de colaps.

10. Selectați motorul din dreapta

Există două motor principal al MySQL: MyISAM și InnoDB. Fiecare are avantajele și dezavantajele sale.
MyISAM este bun pentru a lucra cu aplicatii „grele“, dar mai rău pentru a face față cu prelucrarea datelor în baza de date în cazul în care un număr mare de înregistrări.

Chiar dacă actualizați un singur câmp, una dintre liniile, întregul tabel poate fi blocat, și nici un alt proces nu poate accesa până la finalizarea cererii. În același timp MyISAM foarte rapid la interogări de prelucrare, cum ar fi SELECT COUNT (*).

InnoDB - un mecanism mai complicat și poate fi mai lentă decât mâner MyISAM cele mai multe aplicații. Dar suportă funcții care vă permit să lucreze mai eficient cu baze de date mari.

Traducerea articolului „10 MySQL Cele mai bune practici pentru optimizare» a fost pregătit de o echipă de proiect prietenos Web design de la A la Z.

articole similare