大量のデータを返すクエリを実行しています。916 のドキュメントを検索し、それぞれが大きなデータ フィールド (約 5MB) を持っています。クエリは次のようになります。
db.collection.find(
{'name': somename, 'currency': mycurrency,
'valuation_date': {'$in': [list_of_250_datetime_datetime]}
}.{'data_column: is set to true or false in the below test results}).limit(x)
クエリの最適化を試みたところ、ほとんどの時間が 5 GB のデータベースで検索するのではなく、その大きなデータ項目の読み込み (または送信) に費やされていることがわかりました。したがって、クエリが適切に最適化され、インデックスが正しく使用されていると仮定します。これは、プロファイラーによっても確認されます。
そのため、ディスクからデータをロードするのにほとんどの時間がかかると想定していましたが、インメモリ ストレージ エンジンを使用すると、実際には速度が低下するようです。これはどのように可能ですか?そして、物事をスピードアップするために他に何ができますか?
インメモリ ストレージ エンジン:
================ Starting test using mongodb://localhost:27018/ ================
Looking up 100 values excluding data column...
++++++++++ Query completed in 0.0130000114441 seconds ++++++++++
Looking up 100 values, full json with data...
++++++++++ Query completed in 2.85100007057 seconds ++++++++++
Looking up all values, excluding data column...
++++++++++ Query completed in 0.0999999046326 seconds for 916 items ++++++++++
Looking up all values, full json with data...
++++++++++ Query completed in 29.2250001431 seconds for 916 items ++++++++++
有線虎:
================ Starting test using mongodb://localhost:27017/ ================
Looking up 100 values excluding mdo column...
++++++++++ Query completed in 0.0120000839233 seconds ++++++++++
Looking up 100 values, full json with data...
++++++++++ Query completed in 2.97799992561 seconds ++++++++++
Looking up all values, excluding data column...
++++++++++ Query completed in 0.0700001716614 seconds for 916 items ++++++++++
Looking up all values, full json with data...
++++++++++ Query completed in 23.8389999866 seconds for 916 items ++++++++++