PostgreSQL 9.4 GINインデックスサイズの件(日本語全文検索編)
昨日、SRA OSS.さんが公開したPostgreSQL 9.4検証のレポート
PostgreSQL 9.4 検証報告 - SRA OSS, Inc. 日本支社
を読んで、GINインデックスサイズの大幅な削減結果に驚いたわけなんだけど、じゃあ、日本語全文検索で使われるGINインデクスだと、どのくらいの効果があるものかしらんと思い、手元の環境で簡単に実験してみた。
測定環境
- ホストOS:Let's note CF-SX2(メモリ8GB、SSDモデル)
- ゲストOS:CentOS 6.3
- PostgreSQL
- 9.3.4 ソースビルド版(-gオプションつき)
- 9.4-beta2 ソースビルド版(-gオプションつき)
- 全文検索モジュール
- textserach_ja(ビルド/インスコできるように若干修正)
- pg_bigm-1.1
- PostgreSQLチューニングはほぼデフォルトw
- shared_buffer = 128MB
- maintenance_work_mem
- 9.3 : 16MB(デフォルト)
- 9.4-beta2 : 64MB(デフォルト)
- checkpoint_segments = 3
測定結果
インデックスサイズ
インデックスサイズはpg_indexes_size()で計測。
インデックスサイズに関してはtextsearch_jaとpg_bigmで大きく傾向が異なる。
たぶん、textsearch_jaでは形態素解析によって得られる名詞句等しかインデックス化の対象にしないから、それなりに重複度が高くなり、それ故PostgreSQL 9.4でのGINインデクスサイズ削減効果が効いてくるのかも。
逆にpg_bigmのようなN-gramかつ日本語の場合には、個々のbi-gramの重複度が低いのでそれほど削減効果が見えないのかもなあ。