Evernote10 のローカルDB(sqlite)の断片化を解消

Evernote10 のローカルDB(sqlite)を最適化、断片化を解消してみたメモ


対象はデフォルトで下記の場所(エクスプローラへコピペ)の
%APPDATA%\Evernote\conduit-storage\https%3A%2F%2Fwww.evernote.com

下記のファイル(000000の場所はユーザIDとなっている)
UDB-User000000+RemoteGraph.sql


この作業には sqlite3コマンドが使える環境が必要です
今回は DB Browser for SQLite を使用してますが、何でもよいです

Evernote10を終了させ、DB Browser for SQLite 等で 先程の UDB-User000000+RemoteGraph.sql を開きます

まずは、断片化の状況を調べるため、下記のコマンドをそれぞれ実行して値を調べます(SQLを実行タブ)
PRAGMA page_size
PRAGMA page_count
PRAGMA freelist_count
私の値
PRAGMA page_size = 4,096
PRAGMA page_count = 721,697
PRAGMA freelist_count = 565,701

各count にページサイズを掛ければ、実際の容量が得られます
721,697 * 4,096 = 2,956,070,912 (全体のサイズ)
565,701 * 4,096 = 2,317,111,296 (空きサイズ)
78% が空き(断片化?)ということになります

ということでデータベースを圧縮(vacuum)します
(下の方の最適化も可能ですが、私の環境ではほぼ変化なしでした)


※sql文を保存するか聞いてきますが破棄でよいです(さっきの PRAGMA文のコト)

しばらくして(DBサイズやストレージの速度によります)、データベースを圧縮 ウィンドウが閉じられれば完了

私の場合、ファイルサイズが 2,956,070,912(2.9GB) → 610,885,632(610MB) となりました

結果、Evernote10 は、なんとなく速くなったような...
DB最適化にありがちな、なんとなく感...

コメント