我使用Sails.js和mongoDb(sails-mongo)编写了一个应用程序。
首先,我决定将所有内容写入单个文档...... 并且数据库减慢了5GB的数据.. “慢速”表示基本查找查询在30-50秒内执行..
比我在多个集合中重写所有并添加索引.. 我的模特的例子:
Markets.js
module.exports = {
attributes: {
name: {
type: 'string',
index: true
},
pairs: {
collection: 'Exchanges',
via: 'source',
}
}
};
和Exchanges.js
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);
});
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
}
你可以给我什么建议? 它每分钟约有2000条记录..
如何提高性能? 更改数据库配置?改变指数?改变DB?更改模型/集合配置?
我使用2核服务器和2GB虚拟内存.. 抱歉英文不好..
答案 0 :(得分:5)
使用mongodb时,0.12版Waterline有一个缺点。默认情况下,水线不区分大小写,mongodb就是!
您的查询速度很慢,因为在搜索字符串时,它正在使用REGEX查找任何案例,因此您的索引无用。但您可以通过使用wlnex属性禁用区分大小写来更改它:
someMongodbServer: {
adapter: 'sails-mongo',
host: 'mongodb',
port: 27017,
user: 'username',
password: 'password',
database: 'databaseCoolName',
wlNext: {
caseSensitive: true
}
},
您可以通过查看mongodb日志来确认此错误。并查看缓慢查询的内容。