|
Optimizare automata a tabelelor
|
| Author |
Message |
Agkelos
Designer experimentat
      
Posts: 603
Group: Registered
Joined: Apr 2007
Status:
Offline
Reputation: 11
Lei: 2591.56
|
Optimizare automata a 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. Un exemplu aveti mai jos:

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:
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:
<?php
$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
IPFind :: LAMP :: NoIndex
|
|
| 04-13-2007 08:00 PM |
|

|
Shumi
De al casei
  
Posts: 91
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 0
Lei: 281.41
|
|
| 04-14-2007 03:48 AM |
|
 |
carol
Membru
 
Posts: 43
Group: Registered
Joined: Apr 2007
Status:
Offline
Reputation: 0
Lei: 189
|
RE: Optimizare automata a tabelelor
util doar dacă rulează în cron , în rest nu faci decât să îţi complici munca .
* Living my own reality , Designing yours *
* 127.0.0.1Â Â - The best place in the world *
|
|
| 09-05-2007 11:03 PM |
|
 |
Grim_Cris
Super Moderator
     
Posts: 1,259
Group: Super Moderators
Joined: Jun 2007
Status:
Offline
Reputation: 8
Lei: 2640.93
|
RE: Optimizare automata a tabelelor
explicaţi-mi şi mie unde se pune scriptul ăsta? ce e ăla cron? cum îl fac să ruleze singur? cron-ul face asta?
Grim_Cris va prezinta:
Blogul lui Grim_Cris | PRDirector | Shiny Hair
|
|
| 10-28-2007 02:30 AM |
|
 |
Agkelos
Designer experimentat
      
Posts: 603
Group: Registered
Joined: Apr 2007
Status:
Offline
Reputation: 11
Lei: 2591.56
|
RE: Optimizare automata a tabelelor
explicaţi-mi şi mie unde se pune scriptul ăsta? ce e ăla cron? cum îl fac să ruleze singur? cron-ul face asta?
Cel mai simplu e sa faci o pagina optimizare.php si apoi din cron apelezi http://www.siteultau.ro/optimizare.php. Cron-ul e usor de setat, dar depinde de ce ai la dispozitie. Daca ai un host cu cPanel, trebuie sa ai jos de tot "cron jobs". Acolo ii dai sa ruleze o data pe zi (sau mai rar daca nu ai un site solicitat) comanda: wget http://www.siteultau.ro/optimizare.php.
IPFind :: LAMP :: NoIndex
|
|
| 10-29-2007 07:58 PM |
|
 |
Grim_Cris
Super Moderator
     
Posts: 1,259
Group: Super Moderators
Joined: Jun 2007
Status:
Offline
Reputation: 8
Lei: 2640.93
|
RE: Optimizare automata a tabelelor
bun...merci de explicaţie...dar(există şi un dar) am încercat http://www.siteulmeu.ro/optimizare.php şi-mi apare următoarea eroare:
Parse error: syntax error, unexpected T_STRING in /home/decodari/public_html/optimizare.php on line 5
în linia 5 ar fi cam asta:
$result = mysql_query(‘SHOW TABLES;’,$link);
Ce-aş putea face să rezolv problema?
Grim_Cris va prezinta:
Blogul lui Grim_Cris | PRDirector | Shiny Hair
|
|
| 10-30-2007 02:44 AM |
|
 |
Shumi
De al casei
  
Posts: 91
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 0
Lei: 281.41
|
|
| 10-30-2007 07:49 AM |
|
 |
Grim_Cris
Super Moderator
     
Posts: 1,259
Group: Super Moderators
Joined: Jun 2007
Status:
Offline
Reputation: 8
Lei: 2640.93
|
|
| 10-30-2007 07:35 PM |
|
 |
Agkelos
Designer experimentat
      
Posts: 603
Group: Registered
Joined: Apr 2007
Status:
Offline
Reputation: 11
Lei: 2591.56
|
RE: Optimizare automata a tabelelor
E greseala mea aici. Cand am postat tutorialul am dat copy/paste de pe blog si cum wordpress are prostul obicei sa inlocuiasca ghilimelele cu apostroafe, asa am postat si aici. Pune ghilimele simple ( ' ) peste tot si iti va merge fara probleme (sper).
IPFind :: LAMP :: NoIndex
|
|
| 10-30-2007 08:24 PM |
|
 |
Grim_Cris
Super Moderator
     
Posts: 1,259
Group: Super Moderators
Joined: Jun 2007
Status:
Offline
Reputation: 8
Lei: 2640.93
|
|
| 10-31-2007 02:36 AM |
|
 |