使うにあたって設定項目ざっと調べ太郎。
設定ファイル例(wiredTiger使用)
# mongodb_wt.conf
storage:
dbPath: "/data/mongod_wt"
engine: "wiredTiger"
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
statisticsLogDelaySecs: 0
collectionConfig:
blockCompressor: "snappy"
indexConfig:
prefixCompression: true
journal:
enabled: true
systemLog:
destination: file
path: "/var/log/mongodb/mongodb_wt.log"
logAppend: true
processManagement:
fork: true
storage設定項目例
dbpath
データベースファイルの作成先ディレクトリ
journal
ジャーナルファイル作成するかどうか
directoryPerDB
デフォルトfalse
データベースごとにディレクトリを作成するかどうか
engine
ストレージエンジンの選択
- mmapv1 - 従来のストレージエンジン
- wiredTiger - wiredTigerストレージエンジン
3.0ならwiredTiger使わないと意味ないと思うので、そちらをメインにみる。
wiredTiger設定項目例
engineConfig
cacheSizeGB
デフォルトではシステムメモリの半分 or 1GB
wiredTigerで実データをキャッシュするためのメモリ領域の指定。
スレッドやIndexでもメモリ食うので、最初はシステムメモリの6〜7割とる形が良いと思われる
directoryForIndexes
MySQLだとinnodb_file_per_table相当ですな。
statisticsLogDelaySecs
デフォルトは0(出力しない)
wiredTigerの統計情報ファイルを何秒ごとに出すかの設定。
0だと出力しない。
出力時に重くなる傾向があるので、テスト時は30秒とかで設定して本番の時は10分に一回とか、出さないとかで設定するのがいいかと。
collectionConfig
blockCompressor
データ圧縮するかどうか、デフォルトはsnappy。圧縮時のCPU負荷など気になる場合はnone
- none - 圧縮しない
- snappy - ほどほどの圧縮率で高速に圧縮
- zlib - snappyよりも圧縮率はいいけど低速
indexConfig
prefixCompression
デフォルトTrue
index圧縮を行うかどうか
その他
engineConfigStrings
storage.wiredTiger.engineConfig.engineConfigStrings
で、wiredTigerの細かいオプション設定出来た気がしたんだけど、ドキュメントから消えてる。ので使う場合は注意がいりそう。
補足資料
MongoDB設定
snappyアルゴリズム
Googleで作ったプロトコルらしい、lzoとほぼ同じ圧縮率と速度。