アプリでmongoDBを使う機会があったので
パフォーマンスを測ってみた
結論から言うと
インデックスのないDBは遅すぎて使い物にならない
実行環境は下記
名称 | スペック |
---|---|
OS | Ubuntu18.04 |
CPU | 仮想6コア |
メモリ | 24GB |
HDD | 7200rpm(100IOPS相当) |
IOPSについては下記参照
https://qiita.com/you21979@github/items/21c125a6359d55e9dec4
INSERTの速度
挿入速度、一つのドキュメントは大体1kBに調整済みinsert_oneはひとつずつ、insert_manyは100万件まとめてぶっこんだ速度
後はインデックスが付いているか付いていないかの違い
挿入方法には速度の違いは大きく出たが
インデックスの有無では大きな違いはなかった
インデックスの数を変化させる
先ほどは1つのインデックスのみだったので
0、1、10、25、50で変化させてみる
insert_many
insert_one
定説通りインデックスは大きくなればなるほど遅くなる
ちなみに今回のケースではインデックスの数は最大で61だった
(それ以上はエラー)
FINDの速度
100万件のドキュメントを100万件のリストで調べ終えるまでの時間 結論から言うとインデックスなしは測定不能結局インデックスありのみの比較になってしまったが
二つの違いはfind_oneは一つのドキュメントが
findはカーソル(イテレータ)が返ってくるだけ