Mongodbからどのようなスループットが得られるかを確認するために、いくつかのテストを行っています。ドキュメントには、上限付きコレクションが最速のオプションであると記載されています。しかし、私は通常のコレクションにはるかに速く書き込むことができることに気付くことがよくあります。正確なテストによっては、通常のコレクションで2倍のスループットが得られることがよくあります。
私は何かが足りないのですか?これをトラブルシューティングするにはどうすればよいですか?
私は、コレクションに約64,000のドキュメントをできるだけ速く書き込む非常に単純なC++プログラムを持っています。合計時間と、データベースを待機している時間を記録します。コレクション名だけを変更すると、上限付きコレクションと通常のコレクションの明確な違いがわかります。
> use tutorial
switched to db tutorial
> db.system.namespaces.find()
{ "name" : "tutorial.system.indexes" }
{ "name" : "tutorial.persons.$_id_" }
{ "name" : "tutorial.persons" }
{ "name" : "tutorial.persons.$age_1" }
{ "name" : "tutorial.alerts.$_id_" }
{ "name" : "tutorial.alerts" }
{ "name" : "tutorial.capped.$_id_" }
{ "name" : "tutorial.capped", "options" : { "create" : "capped", "capped" : true, "size" : 100000000 } }
> db.alerts.stats()
{
"ns" : "tutorial.alerts",
"count" : 400000,
"size" : 561088000,
"avgObjSize" : 1402.72,
"storageSize" : 629612544,
"numExtents" : 16,
"nindexes" : 1,
"lastExtentSize" : 168730624,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 12991664,
"indexSizes" : {
"_id_" : 12991664
},
"ok" : 1
}
> db.capped.stats()
{
"ns" : "tutorial.capped",
"count" : 62815,
"size" : 98996440,
"avgObjSize" : 1576,
"storageSize" : 100003840,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 100003840,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 2044000,
"indexSizes" : {
"_id_" : 2044000
},
"capped" : true,
"max" : 2147483647,
"ok" : 1
}
Linuxバージョン:3.4.11-1.fc16.x86_64
mongoバージョン:dbバージョンv2.2.2、pdfileバージョン4.5
これは、Mongodbサーバーと私のテストクライアントを実行するだけの専用マシンです。このテストでは、マシンは途方もなく圧倒されています。