Categories

Optimizarea bazelor de date din Firefox 3

Începând cu Firefox 3 bookmark-urile şi istoricul paginilor vizitate sunt păstrate în fişiere cu baze de date SQLite.
În practică, după o perioadă mai lunga de utilizare sau în modificarea intensivă a listelor cu bookmark-uri, se poate observa o degradare a vitezei cu care reacţionează Firefox atunci când se utilizează funcţiile de auto-complete sau liste lungi de bookmark-uri, motivul principal al acestei degradări este fragmentarea fişierelor care conţin bazele de date SQLite.

Atunci când SQLite şterge înregistrări din baza de date, spaţiul eliberat în acest fel nu este eliminat din fişierul în care se păstrează baza de date ci este marcat ca fiind liber pentru a fi folosit la adăugarea de înregistrări noi înainte de a se creste dimensiunea fişierului care conţine baza de date.
Această tehnică are ca rezultat fragmentarea bazei de date în condiţiile în care fişierul în care se păstrează baza de date este mai mare decât dimensiunea necesara pentru stocarea datelor.
Fragmentarea tabelelor care conţin date este un alt efect secundar nedorit al acestei tehnici, înregistrările dintr-o tabela de date putând fi “împrăştiate” în întreg fişierul care conţine baza de date, necesitând timpi mai mari pentru a încărca datele din tabele, ceea ce poate încetini considerabil viteza de lucru cu baza de date respectiva şi implicit viteaza cu care Firefox reacţionează atunci când accesează informaţii din bazele de date.

Cea mai uşoară metodă de a remedia această problemă este defragmentarea tabelelor şi eliminarea spaţiului nefolosit din fişierele care conţin bazele de date SQLite.

Pentru cei care folosesc Linux, operaţia de defragmentare, redimensionare şi reindexare a tuturor bazelor de date se poate face folosind comanda de mai jos în timp ce Firefox este oprit:

for i in $HOME/.mozilla/firefox*/*/*.sqlite; do echo "Working on: $i"; sqlite3 "$i" "VACUUM";sqlite3 "$i" "REINDEX"; done

Acesta este output-ul comenzii de mai sus executată pe un sistem care rulează Fedora 14 şi Firefox 3.6.15:

[cralin@fedora-machine2 ~]$ for i in $HOME/.mozilla/firefox*/*/*.sqlite; do echo "Working on: $i"; sqlite3 "$i" "VACUUM";sqlite3 "$i" "REINDEX"; done
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/content-prefs.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/cookies.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/downloads.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/formhistory.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/permissions.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/places.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/search.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/signons.sqlite
Working on: /home/cralin/.mozilla/firefox/vzj7buo7.default/urlclassifier3.sqlite
[cralin@fedora-machine2 ~]$

 

 

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>