使用 pymong insert_many 插入数据越来越慢

2020-07-10 11:30:34 +08:00
 dtgxx

大佬们,我数据量一共 60 亿,现在插入了 6 亿左右,一开始的时候 每次 insert_many 只需要 0.05 秒 1000 条

目前已经插入 6 亿左右,现在 1000 条数据有时候需要 20 秒,非常的慢。

用什么办法可以调优一下呢?


mongo 是单点的,部署在一台机器上,没有分片和副本。

试过 bulk_write 性能是一样的

4512 次点击
所在节点    MongoDB
10 条回复
sdot96
2020-07-10 13:06:41 +08:00
机器的运行情况?索引情况?数据表能不能做水平分割?
tikazyq
2020-07-10 13:18:05 +08:00
单机的话,你这个扩展起来问题会很多

几个优化点:
1. 分表( Sharding )
2. 不要创建索引
3. 选择其他技术方案,例如 Hive 、HBase

60 亿条数据,这种量级的数据应该更适合 Hive 或者 HBase 吧,做分布式储存不香么,单点来搞大数据你这不是给自己挖坑么
22too
2020-07-10 13:25:03 +08:00
这个数据量确实会出问题的。之前遇到过。
weizhen199
2020-07-10 15:02:10 +08:00
考虑下几个列式数据库呗。100e 以下应该都还行。
Fizzyi
2020-07-10 15:47:18 +08:00
@tikazyq 大佬想问下为什么说不要创建索引呢
specture
2020-07-10 16:30:17 +08:00
@Fizzyi 索引会降低插入性能
dtgxx
2020-07-10 17:43:45 +08:00
@sdot96 #1 目前数据集合做了分隔,每个集合数据量差不多 200 万,内存 64G available 剩余 20g 左右,cpu48 核 负载 20 左右 数据字段有六个,只有一个字段做了索引
@tikazyq 之前考虑分集合存储,确实没想到插入这么的慢。。主要都是历史数据,想一次导入,后面就轻松了。索引的话,不创建后期查询就非常慢了,所以还是得创建。
@22too
@weizhen199 @tikazyq HBase 在类似的情况下插入,不会数据越多越慢吗?是因为列式存储?
@specture 目前我有六个,后期查询的时候需要一个字段做索引查询,不知道有没有什么好的方式。。。感觉索引还是得要的。
anzu
2020-07-10 17:51:24 +08:00
插完再建索引?
dtgxx
2020-07-10 18:06:42 +08:00
@anzu #8 主要是集合太多了,后面再去建可能相当麻烦。
dtgxx
2020-07-10 18:18:43 +08:00
@anzu #8 下周试下 看看执行情况如何

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX