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 は速くなる…か?を参考に、バックアップを取りながら実行するとよい。