AcasaPortalFAQCautareMembriGrupuriInregistrareConectare

Distribuiţi | 
 

 Tutorial - SQL-Optimizarea tabelelor

In jos 
AutorMesaj
IDeaL.
•Administrator
•Administrator
avatar

Mesaje : 2693
Puncte : 19323
Data de inscriere : 28/02/2010
Varsta : 24

MesajSubiect: Tutorial - SQL-Optimizarea tabelelor   Iunie 12th 2011, 10:18 pm

SQL-Optimizarea tabelelor
Cand aveti un site mare care lucreaza intens cu baze de date se intampla ca la un moment dat sa va mearga din ce in ce mai greu, query-urile sa necesite mai mult timp. Cand se creaza inregistrari intr-un tabel din baza de date se aloca un spatiu pentru informatia stocata. Cand se sterg inregistrarile raman spatii libere, zone in baza de date care sunt ocupate de “nimic”, care nu sunt folositoare. Ca sa fie mai usor de inteles, se poate face comparatie cu fragmentarea
discurilor. Ceva asemanator se intampla si aici. Ramane informatia “rasfirata” pe disc rezultand o baza de date nejustificat de mare. Numele dat acelui spatiu e “Overhead” - spatiu depasit. In phpMyAdmin puteti vedea asta cand deschideti o baza de date.

Exemplul e destul de “anemic”. Cum imi optimizez tot timpul tabelele am gasit doar un overhead de 20B

OK, am inteles ca asta e o problema. In timp se mareste baza de date, creste timpul de procesare, in cazuri mai nasoale (baze de date mari) se
poate intampla sa clacheze serverul si sa corupa unele fisiere. Intrebarea cea mare: “Cum rezolvam problema ?”. MySQL (de fapt, majoritatea serverelor web) suporta instructiunea OPTIMIZE care nu face altceva decat sa elimine overheadul din tabele. Instructiunea se foloseste in felul urmator:
Cod:
OPTIMIZE TABLE `tabel`
Bun. Acum stiti ce aveti de facut ca sa va pastrati o baza de date cu tabele optimizate. Problema e ca la site-urile cu trafic mare si
query-uri multe apare overhead mare si destul de rapid. Asta inseamna ca o data la cateva zile ar trebui sa va faceti timp pentru optimizare
sau… daca sunteti mai lenesi (cum e, de exemplu, autorul acestui articol) faceti un script care sa faca toata treaba. scriptul arata cam asa:
Cod:
        $link = mysql_connect(‘localhost’,‘user’,‘parola’) or die();
        mysql_select_db(‘database’) or die();
     
        $result = mysql_query(‘SHOW TABLES;’,$link);
        while($row = mysql_fetch_array($result,MYSQL_NUM) )
                @mysql_query(‘OPTIMIZE TABLE `’.$row[0].‘`;’,$link);
        echo “Optimization finished”;
?>
Ce face scriptul ? Face o lista cu toate tabelele iar apoi le optimizeaza pe rand. Optional se pot face filtre sa se optimizeze doar unele tabele. Eu am pus script-ul in cron si ruleaza zilnic la o ora la care traficul e mic, deci tabelele sunt tot timpul in forma maxima
Sper sa gasiti scriptul util.

Credite:
Agkelos




Sus In jos
Vezi profilul utilizatorului http://www.hk-team.forumz.ro
 
Tutorial - SQL-Optimizarea tabelelor
Sus 
Pagina 1 din 1

Permisiunile acestui forum:Nu puteti raspunde la subiectele acestui forum
 :: Gaming :: MuOnline :: Tutoriale Server-
Mergi direct la:  
Statistici:
LinkPro - Director WebClanul beoL Top66 Statistici
creează un forum | © phpBB | Forum gratuit de suport | Contact | Semnaleaza un abuz | Creeaza-ti propriul blog gratuit