mongodb で最大 1 億 2000 万のレコードに対してクエリを実行しています。クエリは、mongo シェルと Java ドライバーの両方を使用してすばやく実行されますが、Java ドライバーを介して結果を json オブジェクトに変換しようとすると、非常に遅くなります (クエリには 100 ミリ秒未満かかりますが、json への変換には 30 秒以上かかります)。 . 結果セットには約 5k の項目があります。で変換していJSON.serialize(cursor)
ます。
json文字列に変換するには少し時間がかかると思いますが、シェルからクエリを実行すると、
var cursor = //execute query
var arr = cursor.toArray();
arr
それは非常に速く印刷されます。
mongo サーバーの統計では、シリアル化プロセス中にページ フォールトの数が増加していると報告されていますが、RAM を増やして、コレクション全体とインデックスよりもはるかに大きくしました。
ここで何が起こっているのか、そしてjsonへの変換速度を向上させる方法について何か考えはありますか?