Hatena::ブログ(Diary)

hogehoge @teramako RSSフィード

 | 

2010-05-13

Firefox SQLiteデータベースのVACUUMについて

またこの話か。というかFirefoxのパフォーマンスネタは定期的に挙がりますねw

Twitter上でいくつかやり取りしたけど、僕の考えは以下の通り。

SQLiteのVACUUMは論理データをエクスポートしてインポートし直すような処理。当然データ配置が変る。そうすると、その索引は全く別の行を指し示してしまうかもしれないので無意味な索引になる。VACUUMは対象テーブルに付く索引もセットで再構成されると予想

http://twitter.com/teramako/status/13823980384

なので、REINDEXはやらなくても良いと思っている。ただ、その後VACUUMとVACUUM+REINDEXではファイルのサイズが変化したという報告を頂いているので、REINDEXまでやった方が丁寧なのもしれない。

あ、そうそう、

念のためfirefoxが起動している時には行なわない。

places.sqliteはFirefox起動中は排他ロックが掛かっているので、起動中にsqlite3コマンドなどからアクセスすることは出来ないはず(Firefox内部の特定のXPCOMからのみアクセス可能)。なので、『念のため』ではなく必要用件としてfirefoxは起動している状態ではいけない


なぜか一言も言及されてないけど、

Firefox3.6だったか3.5だったかで、places.sqliteはPCがアイドル時にVACUUMする処理が入っているはず。

(誰かバグ番号教えてください><)

Bug 512854 – VACUUM places.sqlite database on daily idle once a monthだそうです*1

ちょっと勘違いされたかもですが、ステータスがRESOLVED FIXEDとなっています。Mercurial上ではmozilla-1.9.2: changeset 31871:7b4f35e3a442になります。

なので単純にVACUUMしますよ的なアドオンは今は無意味になったと思う。


参考情報

どうでも良いが、DBの再編成のことを「最適化」と呼ぶのは好きじゃない。再編成が最も適した状態になるか保障できないからね。

*1:コメント欄参照

匿名匿名 2010/05/13 15:20 Bug 512854 – VACUUM places.sqlite database on daily idle once a month
https://bugzilla.mozilla.org/show_bug.cgi?id=512854

FirefoxのPlacesデータベースはアイドル時間にvacuumされるようになる - Mozilla Flux
http://d.hatena.ne.jp/Rockridge/20090830/1251639543

teramakoteramako 2010/05/13 15:34 ありがとうございます。
そうか、id:Rockridge さんの記事を探せば良かったのか。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

 |