Dacă aveți multe interogări repetitive și datele dvs. nu se schimbă des - utilizați memoria cache a interogărilor. De multe ori oamenii nu înțeleg conceptul din spatele query_cache_size
și setați această valoare la gigaocteți, ceea ce poate provoca de fapt degradarea performanței.
Motivul din spatele acestui fapt este faptul că firele trebuie să blocheze memoria cache în timpul actualizărilor. De obicei valoarea de 200-300 MB ar trebui să fie mai mult decât suficient. Dacă site-ul dvs. web este relativ mic, puteți încerca să dați valoarea 64M și creșterea în timp.
Va trebui să adăugați următoarele setări în fișierul de configurare MySQL:
query_cache_type = 1. query_cache_limit = 256K. query_cache_min_res_unit = 2k. query_cache_size = 80M.
Ambele directive ar trebui să aibă aceeași dimensiune și vă vor ajuta să preveniți scrierea pe disc. tmp_table_size
este cantitatea maximă de dimensiune a tabelelor interne din memorie. În cazul în care limita în cauză este depășită, tabelul va fi convertit în tabelul MyISAM pe disc.
Acest lucru va afecta performanța bazei de date. Administratorii recomandă de obicei să oferiți 64M pentru ambele valori pentru fiecare GB de RAM de pe server.
[mysqld] tmp_table_size = 64M. max_heap_table_size = 64M.
Înregistrarea interogărilor lente vă poate ajuta să determinați problemele cu baza de date și să vă ajute să le depanați. Acest lucru poate fi ușor activat prin adăugarea următoarelor valori în fișierul de configurare MySQL:
slow-query-log = 1. slow-query-log-file = /var/lib/mysql/mysql-slow.log. long_query_time = 1.
Prima directivă permite înregistrarea interogărilor lente, în timp ce a doua spune MySQL unde să stocheze fișierul jurnal propriu-zis. Utilizare long_query_time
pentru a defini cantitatea de timp considerată lungă pentru finalizarea interogării MySQL.
Conexiunile inactive consumă resurse și trebuie întrerupte sau reîmprospătate atunci când este posibil. Astfel de conexiuni sunt în „dormi”Și, de obicei, rămân așa pentru o perioadă lungă de timp. Pentru a căuta conexiuni inactiv, puteți rula următoarea comandă:
# mysqladmin processlist -u root -p | grep „Dormi”
Aceasta vă va arăta lista proceselor care se află în stare de somn. Evenimentul apare atunci când codul utilizează o conexiune persistentă la baza de date. Când utilizați PHP, acest eveniment poate apărea atunci când utilizați mysql_pconnect care deschide conexiunea, după care execută interogări, elimină autentificarea și lasă conexiunea deschisă. Acest lucru va face ca orice tampon pe fir să fie păstrat în memorie până când firul moare.
Primul lucru pe care l-ați face aici este să verificați codul și să îl remediați. Dacă nu aveți acces la codul care este rulat, puteți schimba wait_timeout
directivă. Valoarea implicită este 28800 secunde, în timp ce îl puteți reduce în siguranță la ceva de genul 60:
wait_timeout = 60.