SQLite の VACUUMで Firefox をスピードアップ

Firefox 一般

Last update: 2009-08-20

Planet Mozilla 経由。Oremj’s Blog で、エラーコンソールを利用して Firefox のプロファイルフォルダ内の SQLite データベースを VACUUM する方法が書かれていたので試してみた。VACUUM は Firefox の拡張機能 SQLite Optimizer を使う方法の他、Terminal.app からでも可能だが、エラーコンソールからというのが面白い。
やり方は、エラーコンソールを表示して、テキストボックスに以下のコードを入力して return キーを押すという、いたって簡単な方法だ。

Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");

時実験に使ったプロファイルは、トラブルで作り替えたためさほど肥大化していない Minefield/3.7a1pre の places.sqlite をサンプルにした。エラ−コンソールコードをペースト、リターンキーを押すと数秒ほどで処理は終わった。リンク先のページにも書かれているが、VACUUM が実行される間、フリーズしたような感じになる。places.sqlite の結果はこんなふうになった。

実行前 実行後
13.5 MB 3.3 MB

同じ places.sqlite を Terminal.app から VACUUM 実行した結果も 3.3 MB と同じ結果だった。
で、これで高速化されるかだが、体感できるような感じはなかった。ただ、ブックマークや履歴の表示には引っかかるような動きをしていたのだが、それは解消され、スマートロケーションバーでのオートコンプリートはスムーズというかきびきびとして、サイドバーでの検索もサクッと動くような気もする。もっとも、さほど肥大化していないサンプルなので、そういった結果なのかもしれない。

実験してみたいと思う方は上記方法を試してみられるとよいが、一つ気をつけること。この方法では現在の places.sqlite を直接弄ってしまうので、万が一を考えると places.sqlite をバックアップしてから実行する方がよい。
ちなみに、Terminal.app から実行する場合は、鳥獣保護区さんのエントリplaces.sqlite の最適化で Firefox 3 は速くなる…か?を参考に、バックアップを取りながら実行するとよい。

Return to Top