3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

mongoDBでドキュメント100万件のパフォーマンスを測ってみた

Posted at

アプリでmongoDBを使う機会があったので
パフォーマンスを測ってみた

結論から言うと
インデックスのないDBは遅すぎて使い物にならない

実行環境は下記

名称 スペック
OS Ubuntu18.04
CPU 仮想6コア
メモリ 24GB
HDD 7200rpm(100IOPS相当)

IOPSについては下記参照
https://qiita.com/you21979@github/items/21c125a6359d55e9dec4

INSERTの速度

挿入速度、一つのドキュメントは大体1kBに調整済み

insert_speed_qiita.png

insert_oneはひとつずつ、insert_manyは100万件まとめてぶっこんだ速度
後はインデックスが付いているか付いていないかの違い

挿入方法には速度の違いは大きく出たが
インデックスの有無では大きな違いはなかった

インデックスの数を変化させる

先ほどは1つのインデックスのみだったので
0、1、10、25、50で変化させてみる

insert_many

index_speed_qiita.png

insert_one

index_insert_one_speed_qiita.png

定説通りインデックスは大きくなればなるほど遅くなる
ちなみに今回のケースではインデックスの数は最大で61だった
(それ以上はエラー)

FINDの速度

100万件のドキュメントを100万件のリストで調べ終えるまでの時間 結論から言うとインデックスなしは測定不能

find_speed_qiita.png

結局インデックスありのみの比較になってしまったが
二つの違いはfind_oneは一つのドキュメントが
findはカーソル(イテレータ)が返ってくるだけ

まとめ

今回はHDDだったのでSSDならかなり早くなるはず 何にせよ100万件程度だとDBをDBとして使うならインデックスは必須 だということがわかった
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?