Optimizare MySQL

Ati fost pusi vreodata in situatia de a fi instiintati de catre providerul dumneavoastra de hosting ca scripturile pe care le utilizati consuma prea multa memorie sau procesor? De cele mai multe ori acest lucru se intampla datorita utilizarii bazelor de date cu scripturi facute “pe genunchi”.

Cum rezolvati aceasta problema? Prin optmimizarea utilizarii bazelor de date. Sunt mai multe lucruri de care trebuie tinut cont:

1) Creati cate o baza de date diferita pentru fiecare site pe care-l utilizati, astfel veti scadea numarul de conexiuni pe baza de date si veti putea administra mai usor backupurile.

2) Verificati cu mare atentie toate interogarile SQL pe care le folositi in cadrul scripturilor dvs si creati toti indecsii necesari in tabelele respective. Indecsii definiti trebuie sa “acopere” toate combinatiile de parametri utilizati in cautari. Nu ignorati utilizarea indecsilor bazandu-va pe faptul ca numarul de inregistrari este mic, in timp el poate creste, si chiar la un numar nu foarte mare de inregistrari (de doar cateva sute sau mii) serverul poate fi “ingenuncheat” daca nu se folosesc corect indecsii. Pentru a vedea ce indecsi se folosesc la executarea unei anume interogari SELECT se poate folosi clauza EXPLAIN. Exemplu: EXPLAIN select …

3) Nu mai utilizati steluta * in fraza SELECT, ci inlocuiti steluta * cu lista campurilor pe care doriti sa le utilizati efectiv. Astfel nu se mai incarca in memorie toate campurile din tabela ci doar cele de care aveti nevoie si astfel se salveaza o cantitate deloc neglijabila de memorie. Exemplu: folositi select nume_camp_1, nume_camp_2 from nume_tabela … in loc de select * from nume_tabela …

4) La citirea din baza de date folositi parmetrul NOLOCK pentru a minimiza riscul aparitiei coliziunilor intre citiri si updateuri. Exemplu: select nume_camp from nume_tabela NOLOCK where nume_camp > valoare

5) Nu uitati sa eliberati memoria imediat dupa ce v-ati preluat valorile dorite, prin stergerea variabilei recordsetului si prin inchiderea conexiunii cu baza de date. Exemplu: mysql_free_result($recordset) si mysql_close($conexiune)

6) In special la tabelele utilizate intensiv atat pentru citiri cat si pentru adaugarea de noi inregistrari, se recomanda folosirea clauzei LOW PRIORITY atucni cand efectuati updateuri. Exemplu: update LOW_PRIORITY nume_tabela set nume_camp = valoare

Inca odata, atentie: din utilizarea unor scripturi facute “pe genunchi” poate rezulta un server “in genunchi”.

Articol publicat in categoria Diverse

Gazduire la JustHost