Firefox の sqlite の最適化 [Firefox]
またまた放置してしまいましたが、ぼちぼち生きてます。
2013-02-13頃、書きました。
最近、Firefox の重さに我慢できなくなった。
原因のひとつが SQLiteデータベースにあり、それを最適化すると、改善する場合がある(らしい)。
そして、最適化とは vacuum して reindex する事らしい。(←嘘かもしれません)
それが目的のアドオン、SQLite Optimizer :: Add-ons for Firefox があるのだが、Firefox 17.0/18.0 あたりは未対応のよう。(2013-01-23時点)
このアドオンを展開して、どこかを書き換えれば動くかもしれないけど、今回は別の方法が見つかったので、そっちで。
2013-01-19 片鱗懐古のブログ: sqlite3でfirefoxのプロファイルをvacuum
なるほど、コマンドライン(?)からやれば良いわけですね。ありがとうございます>片鱗懐古のブログさん
この方法での最適化を Linux と Windows でやってみたのでメモしておく。
- OS: CentOS 5.9
- Firefox: 17.0 i686
- SQLite3: 3.3.6
- Date: 2013-01-23
- OS: Windows XP pro.
- Firefox: 18.0.2
- SQLite3: 3.7.15.2 (?)
- Date: 2013-02-13
中身は sqlite3.exe がひとつ入っているだけ。今回は Firefox のプロファイルフォルダに置いた。(これにしか使わないから)
- プロファイル | Firefox ヘルプ
- どちらもバックアップファイルを作って、最適化する。
- バックアップファイルがある場合はやらない。
- sqlite3 の使い方が、よくわからないので違っているかも。
MS-DOS時代からあまり変わってない。MSさん的には「GUIを使ってね」と、あえてやってないだけだと思けど・・・。
Cygwin を入れたくなるが、それをこらえて 2つのバッチファイルを作った。
for文の引数に複数のコマンドを書く方法もあるらしいけどが、その中で条件分岐ってどうやるのかわからない。
出来たとしても、きっとわけわからん事になるので、2つに分けた。
もっと良いやりかたがありそうだけど・・・。
- optimize_sqlite.bat
- optimize_sqlite_exec.bat
places.sqlite が、変わってないのは、Vacuum Places Improved :: Add-ons for Firefox で、お掃除していたからだと思う。
- chromeappsstore.sqlite : 262144 => 98304
- formhistory.sqlite : 851968 => 720896
- permissions.sqlite : 163840 => 131072
- urlclassifier3.sqlite : 57671680 => 43843584
- cookies.sqlite: 524288 => 131072
- formhistory.sqlite: 4751360 => 4816896 (ちょっと増えた?)
- places.sqlite: 10485760 => 4325376
おわり
2013-02-13頃、書きました。
□ 1. 概要
Firefox が使用する *.sqlite データベースファイルを最適化する手順のメモ。最近、Firefox の重さに我慢できなくなった。
原因のひとつが SQLiteデータベースにあり、それを最適化すると、改善する場合がある(らしい)。
そして、最適化とは vacuum して reindex する事らしい。(←嘘かもしれません)
それが目的のアドオン、SQLite Optimizer :: Add-ons for Firefox があるのだが、Firefox 17.0/18.0 あたりは未対応のよう。(2013-01-23時点)
このアドオンを展開して、どこかを書き換えれば動くかもしれないけど、今回は別の方法が見つかったので、そっちで。
2013-01-19 片鱗懐古のブログ: sqlite3でfirefoxのプロファイルをvacuum
なるほど、コマンドライン(?)からやれば良いわけですね。ありがとうございます>片鱗懐古のブログさん
この方法での最適化を Linux と Windows でやってみたのでメモしておく。
□ 2. バージョンなどメモ
Linux
- OS: CentOS 5.9
- Firefox: 17.0 i686
- SQLite3: 3.3.6
- Date: 2013-01-23
Windows
- OS: Windows XP pro.
- Firefox: 18.0.2
- SQLite3: 3.7.15.2 (?)
- Date: 2013-02-13
□ 3. SQLite3 の入手
Linux
インストール済みだったので何もしていない。$ rpm -q sqlite sqlite-3.3.6-6
Windows
SQLite Download Page から、"sqlite-shell-win32-x86-3071502.zip (266.31 KiB)" をダウンロード。中身は sqlite3.exe がひとつ入っているだけ。今回は Firefox のプロファイルフォルダに置いた。(これにしか使わないから)
□ 4. 最適化するデータベースファイル
データベースファイルは、プロファイルフォルダにあるみたい。- プロファイル | Firefox ヘルプ
Linux
ls -l *.sqlite の結果-rw-r--r-- 1 myname myname 589824 1月 23 08:34 addons.sqlite -rw-r--r-- 1 myname myname 262144 1月 22 08:26 chromeappsstore.sqlite -rw-r--r-- 1 myname myname 229376 1月 21 08:43 content-prefs.sqlite -rw-r--r-- 1 myname myname 524288 12月 12 17:20 cookies.sqlite -rw-r--r-- 1 myname myname 65536 1月 23 08:30 downloads.sqlite -rw-r--r-- 1 myname myname 163840 1月 23 08:38 evernote_webclipper.sqlite -rw-r--r-- 1 myname myname 524288 1月 23 08:38 extensions.sqlite -rw-r--r-- 1 myname myname 851968 1月 23 08:49 formhistory.sqlite -rw-r--r-- 1 myname myname 163840 1月 23 08:51 permissions.sqlite -rw-r--r-- 1 myname myname 10485760 1月 23 08:49 places.sqlite -rw-r--r-- 1 myname myname 65536 8月 27 17:36 search.sqlite -rw-r--r-- 1 myname myname 327680 9月 6 10:27 signons.sqlite -rw-r--r-- 1 myname myname 57671680 11月 21 10:23 urlclassifier3.sqlite -rw-r--r-- 1 myname myname 98304 11月 29 2011 webappsstore.sqlite
Windows
dir *.sqlite の結果2013/02/13 09:35 589,824 addons.sqlite 2013/01/17 08:23 262,144 chromeappsstore.sqlite 2012/12/12 10:38 229,376 content-prefs.sqlite 2013/01/21 13:00 524,288 cookies.sqlite 2013/02/04 10:47 65,536 downloads.sqlite 2013/02/12 08:31 98,304 evernote_webclipper.sqlite 2013/02/12 08:31 524,288 extensions.sqlite 2013/02/13 08:50 4,751,360 formhistory.sqlite 2013/02/13 09:43 65,536 permissions.sqlite 2013/02/13 09:43 10,485,760 places.sqlite 2012/06/22 08:30 65,536 search.sqlite 2012/09/06 10:17 327,680 signons.sqlite 2012/11/20 11:05 98,304 webappsstore.sqlite
□ 5. スクリプトを書いた
Firefox のプロファイルフォルダに、ごく簡単なスクリプトを作った。- どちらもバックアップファイルを作って、最適化する。
- バックアップファイルがある場合はやらない。
- sqlite3 の使い方が、よくわからないので違っているかも。
Linux
Shell Script で。$ cat optimize_sqlite.sh #!/bin/sh while [ "x$1" != "x" ] do database=$1 backupfile=$database.backup if [ ! -e $backupfile ] then cp -p $database $backupfile sqlite3 $database "vacuum;reindex;" fi shift done
Windows
Windows のバッチファイルは、繰り返し処理とか、条件分岐とか・・・独特かつプアで困る。MS-DOS時代からあまり変わってない。MSさん的には「GUIを使ってね」と、あえてやってないだけだと思けど・・・。
Cygwin を入れたくなるが、それをこらえて 2つのバッチファイルを作った。
for文の引数に複数のコマンドを書く方法もあるらしいけどが、その中で条件分岐ってどうやるのかわからない。
出来たとしても、きっとわけわからん事になるので、2つに分けた。
もっと良いやりかたがありそうだけど・・・。
- optimize_sqlite.bat
@echo off for %%d in (%1) do cmd/c "optimize_sqlite_exec.bat %%d"
- optimize_sqlite_exec.bat
@echo off if "x%1" == "x" goto label_noargs set database=%1 set backupfile=%database%.backup if exist %backupfile% goto label_backup_exist copy /b /v %database% %backupfile% sqlite3 %database% "vacuum;reindex;" goto label_exit :label_noargs echo usage: optimize_sqlite_exec sqlite-databse-file goto label_exit :label_backup_exist echo %backupfile% is found, ignored goto label_exit :label_exit
□ 6. 最適化してみる
Firefox がデータベースファイルをオープンしているかもしれないので、Firefox を終了して実行。Linux
$ sh optimize_sqlite.sh *.sqlite
Windows
C:\(省略)> optimize_sqlite *.sqlite
□ 7. 結果
リンクをクリックしてページのロードが開始されるまでが、早くなったような気がする。Linux
サイズが変わったのは以下の4つ。あとは変わらなかった。places.sqlite が、変わってないのは、Vacuum Places Improved :: Add-ons for Firefox で、お掃除していたからだと思う。
- chromeappsstore.sqlite : 262144 => 98304
- formhistory.sqlite : 851968 => 720896
- permissions.sqlite : 163840 => 131072
- urlclassifier3.sqlite : 57671680 => 43843584
Windows
- chromeappsstore.sqlite: 262144 => 98304- cookies.sqlite: 524288 => 131072
- formhistory.sqlite: 4751360 => 4816896 (ちょっと増えた?)
- places.sqlite: 10485760 => 4325376
おわり
コメント 0