Mongodb 100 万条记录越来越慢
Mongodb with 1 million records is getting slow
我正在努力搜集当地超市的产品价格,以留意优惠信息。数据保存在 mongodb 中,但速度越来越慢。现在有大约 35,000 种产品被索引,总共有 100 万条记录,因为同一产品有价格历史记录。我插入的一条记录看起来像这样:
{
_id: ObjectId("626557a944ea574f69b49324"),
title: 'Nutella 21042022 2015 food',
category: 'kitchen',
date: '21042022',
datetime: ISODate("2022-04-21T12:15:00.000Z"),
href: 'http://www.website.com/product/345345',
name: 'Nutella 800g',
time: '2015',
website: 'www.website.com'
}
我在“标题”上使用了超市网站上独一无二的更新。
const query = { title: title };
const update = { $set: { title, href, name, date, time, datetime..., }};
const options = { upsert: true };
const res = await collection.updateOne(query, update, options);
log("Added: " + title);
类似
db.supermarket.find({name: "Nutella 800g"}).count()
returns 176 需要几秒钟。我可以接受,但如果它的大小扩展到 5 倍到 10 倍,那么数据库将无法使用。所以显然有更好的方法来构造数据。我做错了什么明显的事情?
编辑:
索引的唯一变化是为“title”添加了一个索引。
db.supermarket.createIndex({title:1})
结果:
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2, key: { title: 1 }, name: 'title_1' }
]
您是否为您的作品创建了唯一索引?因为您在评论中提到的索引似乎是一个简单的索引,而不是唯一的索引。这应该会大大加快您的更新速度。
为了加快查询速度,您还可以在名称列上创建索引,这应该有助于更快地检索文档
我正在努力搜集当地超市的产品价格,以留意优惠信息。数据保存在 mongodb 中,但速度越来越慢。现在有大约 35,000 种产品被索引,总共有 100 万条记录,因为同一产品有价格历史记录。我插入的一条记录看起来像这样:
{
_id: ObjectId("626557a944ea574f69b49324"),
title: 'Nutella 21042022 2015 food',
category: 'kitchen',
date: '21042022',
datetime: ISODate("2022-04-21T12:15:00.000Z"),
href: 'http://www.website.com/product/345345',
name: 'Nutella 800g',
time: '2015',
website: 'www.website.com'
}
我在“标题”上使用了超市网站上独一无二的更新。
const query = { title: title };
const update = { $set: { title, href, name, date, time, datetime..., }};
const options = { upsert: true };
const res = await collection.updateOne(query, update, options);
log("Added: " + title);
类似
db.supermarket.find({name: "Nutella 800g"}).count()
returns 176 需要几秒钟。我可以接受,但如果它的大小扩展到 5 倍到 10 倍,那么数据库将无法使用。所以显然有更好的方法来构造数据。我做错了什么明显的事情?
编辑:
索引的唯一变化是为“title”添加了一个索引。
db.supermarket.createIndex({title:1})
结果:
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2, key: { title: 1 }, name: 'title_1' }
]
您是否为您的作品创建了唯一索引?因为您在评论中提到的索引似乎是一个简单的索引,而不是唯一的索引。这应该会大大加快您的更新速度。
为了加快查询速度,您还可以在名称列上创建索引,这应该有助于更快地检索文档