Melhorando a performance do Firefox “aspirando” o sqlite

Faz uns dias que deixei marcado um artigo para ler e finalmente o li. Era sobre como melhorar a performance do Firefox fazendo um “Vacuum” no sqlite.

Segundo o post, a partir da versão 3, o Firefox guarda os favoritos, histórico e mais um punhado de coisas em sqlite. Por isso, manter essa base otimizada pode ser muito saudável ao seu Firefox.

E o processo é muito simples. No Ubuntu (testei no 9.04), instale o sqlite3. Abra o terminal e digite:

sudo aptitude install sqlite3

Depois, ainda no terminal, acesse a pasta de seu perfil (profile) do Firefox:

cd ~/.mozilla/firefox/alguma_coisa_estranha.default

Varia de acordo com o computador. No meu, esse alguma_coisa_estranha.default é 73cm0ffy.default.

Você vai ver que essa pasta possui vários arquivos com a extensão .sqlite, que é o que queremos otimizar. Para isso, feche o Firefox (não antes de terminar de ler esse post ou copiá-lo :P), depois simplesmente digite, para cada arquivo:

sqlite3 nome_do_arquivo.sqlite vacuum

Tem como fazer em todos os arquivos de uma vez? Claro. Você está mexendo em um terminal Linux! Para fazer todos de uma vez, digite:

for i in *.sqlite; do sqlite3 $i vacuum; done

Não sei dizer qual a diferença de performance que isso proporciona, mas o que puder fazer pra melhorar acho que vale a pena.

23 opiniões sobre “Melhorando a performance do Firefox “aspirando” o sqlite”

  1. O comando vacuum reconstrói todo o arquivo. Para comparação, pense que ele vai “desfragmentar” os dados, o que vai trazer um ganho de desmpenho na leitura :)

  2. Gostei da idéia! Fiz um ajuste que permite rodar o processo sem saber o nome do diretório de perfil; mais prático para rodar por um script (quem sabe pela crontab para todos os usuários ou durante a carga do profile)….

    find $HOME/.mozilla/firefox/ -name *.sqlite -exec sqlite3 {} vacuum \;

  3. Eu sou fã de linha de comando, mas o BleachBit faz o vaccum, limpa caches, históricos, sessões, do Firefox, epiphany,Bash, Flash, Acroread, thumbnails, etc. e é GTK :)

  4. Boa dica !

    Só para acrescentar, no Mandriva Linux 2009.1 (o último) pelo menos o pacote que contém o sqlite3 é o pacote de nome sqlite3-tools.

    Para instalar, pode-se usar o MCC ou o comando

    urpmi sqlite3-tools

  5. André, dá pra fazer o mesmo no Windows e eu pude sentir diferença bastante perceptível no desempenho.

    Após baixar o sqlite3 direto do site, descompactá-lo num diretório no path do Windows (ou alterando o path do Windows acrescentando o path até o executável do sqlite3) – recomendo \windows\system32\ – , entre no seu diretório pessoal via prompt de comando e vá até o diretório do application data (no Vista é AppData\Roaming e AppData\Local – sim, em ambos têm arquivos do sqlite – , Mozilla\Firefox\Profiles\coisaesquisita.default) e execute o comando a seguir (funcionou direitinho no meu caso):
    for %A in (dir *.sqlite) do sqlite3 %A vacuum

    Mesmo assim valeu pela dica, melhorou bastante o desempenho do Firefox por aqui.

  6. Pra mim aparece a mensagem

    Unable to open database “places.sqlite”: file is encrypted or is not a database

    para todos os arquivos .sqlite.

  7. Fiz e funcionou perfeitamente, o desempenho da minha barra de endereço (autocompletar) estava sofrível e como eu não apago o histórico tava muito pesado, agilizou muito.

  8. Valeu a dica André. Eu resolvi adicionar isso no meu .bashrc e ficou dessa forma:

    #optimizing Firefox sqlite databases
    firefox=’/home/jackal/.mozilla/firefox/5azyrvyn.default’
    opt_lock=”$firefox/optimize-sqlite”
    today=$(date +%F)

    if [ -e $opt_lock ]
    then
    last_run=$(ls -l $opt_lock | awk ‘{print $6}’)
    else
    last_run=’1900-01-01′
    fi

    if [ $last_run != $today ]
    then
    echo -n “Optimizing Firefox… ”
    for i in *.sqlite
    do
    sqlite3 $i vacuum
    echo -n ‘+’
    done
    echo
    touch $opt_lock
    echo “Done.”
    fi
    cd ~/

    Assim o Firefox é otimizado todo o dia que eu logar, mas apenas uma vez por dia!

  9. Senti uma melhora no auto-completar, no resto não tenho como dizer, já que aí já pode ser melhoria psicológica, além de eu ter feito outras mudanças importantes no about:config.

  10. Alceu (ou quem puder responder:

    Pergunta de iniciante:
    Mas o uso excessivo do Vacuum não pode gerar inconsistências nos BD’s?
    Não sei se é verdade, mas dizem que não é bom efetuar desfragmentação de disco com tanta frequência em ambiente Windows. O mesmo não se aplica para arquivos de BD em qualquer sistema operacional?

    Abraço.

  11. # desta forma não necessita buscar a pasta do perfil
    find ~ -name ‘*.sqlite’ -exec sqlite3 ‘{}’ ‘VACUUM;’ \;

    # para windows entre na pasta do perfil e execute
    for %i in (*.sqlite) do @echo VACUUM; | sqlite3 %i

  12. Rafael, usa o comando sqlite3 e não o sqlite.

    Eu cheguei a esta página procurando como o firefox tinha conseguido encriptografar o sqlite porque eu recebi esta mensagem quando tentei acessar os bancos de dados de curiosidade 😛 , eu achava que sqlite fosse um link para sqlite3…

    @post
    Acabei achando esta página, amigo, você salvou meu firefox 😀

    Eu não formato o linux a mais de 3 anos (não me da problemas nenhum :) ), eu não entendia porque que quando eu instalava no windows ficava mais rápido, agora caiu a ficha \o/

    :)


  13. Alceu:

    Valeu a dica André. Eu resolvi adicionar isso no meu .bashrc e ficou dessa forma:
    #optimizing Firefox sqlite databases
    firefox=’/home/jackal/.mozilla/firefox/5azyrvyn.default’
    opt_lock=”$firefox/optimize-sqlite”
    today=$(date +%F)
    if [ -e $opt_lock ]
    then
    last_run=$(ls -l $opt_lock | awk ‘{print $6}’)
    else
    last_run=’1900-01-01′
    fi
    if [ $last_run != $today ]
    then
    echo -n “Optimizing Firefox… ”
    for i in *.sqlite
    do
    sqlite3 $i vacuum
    echo -n ‘+’
    done
    echo
    touch $opt_lock
    echo “Done.”
    fi
    cd ~/
    Assim o Firefox é otimizado todo o dia que eu logar, mas apenas uma vez por dia!

    Para colocar a pasta do perfil do firefox em uma variável fazemos…

    firefox=”`find ~/.mozilla/ -iname “*.default”`”

    desta forma é possível colocar a função em qualquer ~/.bashrc da vida

  14. Podemos testar se o sqlite3 está instalado, assim o seu bashrc irá apenas avisar caso o mesmo não esteja instalado

    [ -z “`whereis sqlite3 | awk ‘{print $2}’`” ] && echo instale o sqlite3

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *