MongoDB
wiredTiger

mongod設定項目まとめ(wiredTiger編)

More than 3 years have passed since last update.

使うにあたって設定項目ざっと調べ太郎。

設定ファイル例(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設定

http://docs.mongodb.org/manual/reference/configuration-options/

snappyアルゴリズム

Googleで作ったプロトコルらしい、lzoとほぼ同じ圧縮率と速度。

http://www.slideshare.net/moaikids/snappy

http://static.tumblr.com/lbtm3t2/8PAn0kziu/mongodb-logo.png