2009/07/11

Firefox のデータベースをバキュームして性能改善

原文:Vacuum your Firefox databases for better performance by Percy Cabello -- July 10, 2009 - 11:28 am

Firefox 3.0以降、ブックマーク、履歴、その他ほとんどのデータは SQLite データベースに保存されるようになりました。また、オーサムバーでヒットしやすいように、デフォルトの履歴保存期間は9日から90日に引き上げられましたが、ブラウジング習慣によっては巨大なデータベースになってしまうことがありました。

他のデータベースと同様に、SQLite データベースは時間とともに断片化が発生し、未使用領域が広く散らばってしまいます。しかしながら、データベースを調べたり最適化する管理機能が無いために、やがて断片化が性能に悪い影響を与えるようになります。よって、起動を高速化したり、ブックマークと履歴に関連した処理性能を改善するには、これらのデータベースをデフラグし、未使用領域を取り除く必要があります。

手順:

Step 1: プラットフォームに合った単一ファイルのコマンドライン版 SQLite データベースマネージャ sqlite3 を入手します(Linux、Windows、Mac OS X で利用できます)。

Step 2: ダウンロードしたバイナリを .sqlite ファイルがあるプロファイルフォルダにコピーします。

Step 3: Firefox を終了させます。

Step 4: プロファイルフォルダ内で、コマンドラインプロンプトから以下を実行します:

sqlite3 [SQLite database] VACUUM

[SQLite database] は places.sqlite などの SQLite ファイル名に置き換えます。

Windows ではすべての SQLite データベースを一度にデフラグするには以下を実行します:

for %a in (*.sqlite) do (sqlite3 %a VACUUM)

複数のマシンに対してスクリプトを実行してみたところ、データベースのデフラグ後に起動時間が目に見えて短縮されました:

マシンバキューム前の places.sqlite のサイズバキューム後の places.sqlite のサイズバキューム前のCold Startup
バキューム後のCold Startup
マシン1: 1 window, 20 tabs10 MB9 MB11 s8 s
マシン2: 3 windows, 25 tabs40 MB27 MB10 s7 s

もしこれがうまく行くなら、なぜ Mozilla はこのデフラグ処理を実装していないのでしょうか? もちろん彼らもそうしたいのですが、まだうまいやり方が見つからないのです。一つの案はデフラグを更新時に行うというものです: これは定期的(ほぼ6週間おき)に行われるというメリットがあります。またデフラグを実行するには、データベースをファイルを解放するためにFirefox を終了させてユーザの作業を中断する必要がありますが、Firefox の更新というのはまさにその条件にぴったり合うのです。

Windows ユーザならば InfoSpyware が作成した IniFox(リンク先はスペイン語)を使用するという手があります。これは単に sqlite3 と、上で述べたようにプロファイルフォルダ内のすべてのデータベースをデフラグするための対話的なバッチファイルを一つにパッケージしたものです。ダウンロードしてコピーするという作業は必要ですが、 コンソールを開いてすべてのデータベースについて作業を繰り返すという手間を省くことができます。

この作業を行う場合、実行前後の起動時間とファイルサイズを計測して結果をコメント欄で共有してください。cold startup を正確に計測するには、システムを再起動する必要があります。

ラベル: ,

Copyright (c)2005 by the Mozilla Links Contributors. Mozilla Links(TM) is a publication of the Mozilla Newsletter project under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License.