Skip to main content

Wired Tiger V/S MMAPV1

Quick Introduction of Wired Tiger Storage Engine:


It is the first pluggable storage engine,  new in Mongodb 3.0. 
Stores data in B-tree while MMAPPV1 stores its indexes in B-tree not data.  
Wired tiger has two caches (Wired Tiger and File system) for performance improvement.  
Provides document level locking in short better concurrency than MMAPV1. 
From Mongodb Version 3.2  wired tiger is the default storage engine.

Steps to replace existing MMAPV1 storage engine with Wired Tiger Storage Engine on
Mongodb version: 3.0.4


We have already running mongod services with three members replica sets having default storage engine (MMAPV1):

Here are three mongod processes:

mongod --config /data/replset1/conf/rs_member.conf
mongod --config /data/replset2/conf/rs_member.conf
mongod --config /data/replset3/conf/rs_member.conf


Note: If we directly try to restart mongod with –storageEngine parameter then we get following error:
Cannot Start server. Detected data files in /data/db_replset1 created by storage engine ‘mmapv1’
So we need to remove all the files from the folder  /data/db_replset1/
rm –rf  /data/db_replset1/*
same process for remaining two replicas

restart mongod services as below or we can add strorage parameter to our config file:

mongod --config /data/replset1/conf/rs_member.conf --storeEngine wiredTiger
mongod --config /data/conf/rs_member.conf --storeEngine wiredTiger
mongod --config /data/replset3/conf/rs_member.conf --storeEngine wiredTiger

Further we can check for storage engine as:

Connect to mongo shell:

Switch to db local
Use Local

Here we have startup_log collection

db.startup_log.find().pretty()








We have wiredTiger configured now.

-------------------------------------------------------------------------------------------------

How wiredTiger seems to be different from MMAPV1

Let's see some aspects:

In MMAPV1 storage engine at db path we have datafile like this:












In Wired Tiger Storage engine at dbpath we have datafiles like this:










There is a database named testdb having two collections:
In MAPPV1 datafiles looks like- database specific

 

In Wired Tiger datafiles looks like- collection specific.
Wired tiger works on collection level, datafiles for collection and index already created




Comments

Popular posts from this blog

Recover Recently Deleted documents

use recoverDoc ; for ( i = 0 ; i < 100 ; i ++){ db . col1 . insert ({ _id : i })}; for ( i = 100 ; i < 200 ; i ++){ db . col1 . insert ({ _id : i , name : "some_x_name" })}; > db . col1 . remove ({ "name" : "some_x_name" }) WriteResult ({ "nRemoved" : 100 }) use local ; db . oplog . rs . find ({ op : "i" , ns : "recoverDoc .col1" , "o.name" : "some_x_name" }). count (); 100 db . oplog . rs . find ({ op : "i" , ns : "recoverDoc .col1 " , "o.name" : "some_x_name" }, { "o" : 1 }); { "o" : { "_id" : 100 , "name" : "some_x_name" } } { "o" : { "_id" : 101 , "name" : "some_x_name" } } { "o" : { "_id" : 102 , "name" : "some_x_name" } } { "o" : { ...

Mongod log is growing too large.

We have log append true in config file. Every day log is appended to the single log file. We are facing issue in space and we were also not able to purge the log file completely. So we need logs file for every day, if we have space issue then we can remove the old logs. Only thing we need to do is: In config file make sure we have: logappend = true Then login to mongo shell, run the below command against the admin database. use admin db.runCommand({logRotate:1})