私はmongoDb(sails-mongo)でSails.jsを使ってアプリを書いた。Sails.jsで遅いMongoDBクエリ
まず、私は単一の文書にすべてを書くことにした... そして、データベースはデータの5ギガバイトに鈍化... は、「広告掲載を抑制」Iより
..基本的な検索クエリが30-50sで実行されたことを意味し
Markets.js
module.exports = {
attributes: {
name: {
type: 'string',
index: true
},
pairs: {
collection: 'Exchanges',
via: 'source',
}
}
};
とExchanges.js
..私のモデルの 例を複数のコレクション内のすべてを書き換えるとインデックスを追加db.stats あなたは私をアドバイスすることができますどのような> db.stats()
{
"db" : "stats222",
"collections" : 8,
"objects" : 36620661,
"avgObjSize" : 238.26556139988844,
"dataSize" : 8725442352,
"storageSize" : 10033258480,
"numExtents" : 63,
"indexes" : 13,
"indexSize" : 2940024192,
"fileSize" : 14958985216,
"nsSizeMB" : 16,
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"dataFileVersion" : {
"major" : 4,
"minor" : 22
},
"ok" : 1
}
の
module.exports = {
attributes: {
s1: {
type: "string"
},
source:{
model: "Maklers",
index: true
},
s2: {
type: "string"
},
p: {
type: 'float'
},
v1: {
type: 'float'
},
v2: {
type: 'float'
},
vb: {
type: 'float'
}
}
};
とスロークエリの例
Markets.findOne({
name: info,
sort: 'createdAt DESC',
limit: 1,
createdAt: {
'<=': aft
}
}).populateAll().exec(function(err, items) {
callback(err, items);
});
結果? 毎分約2000件のレコードです。
パフォーマンスを向上させるにはどうすればよいですか? データベース設定を変更しますか?インデックスを変更しますか? DBを変更しますか?モデル/コレクションの設定を変更しますか?
私が...悪い英語のため は申し訳ありません..
実際に何をしようとしていますか?これは、クエリの種類を混在させているようです。例えばfindOneメソッドの制限を使用すると何もできません... –
Actualy Limit ..古いクエリの一部です。ここではちょうどFind .. これは削除されました。 –
その一部は、データベースが常駐するサーバー。理想的には、ページフォールトなどが得られないように、データベース全体とインデックスをメモリに保持するのに十分なメモリが必要です。 .populateAll()メソッドが呼び出されます。これは*本当に高価です。特に、最初の.find()ステップから多くのレコードが返された場合は、それはあなたのクエリに余分なクエリと反復の*千*を追加することができます... –