事情是这样:
在 mongo 里已经有 base 库(2 亿)数据,"key"字段有索引
现在可能会有这种业务:大约两百万数据的 key ,去 base 库里匹配,匹配上的数据重新插入另一个表(这里叫 test_table )
那么问题来了。。
我在单机测试中发现 mongo 插入速度只能达到 5000/s ,领导的要求是最少 1w/s
我测试了 mongo 的 sharding 效果并没有显著提升,求 V 友们给点思路~
1
9hills 2015-09-12 22:29:18 +08:00
有没有用 Bulk Write
|
2
cevincheung 2015-09-12 22:35:45 +08:00
关闭安全写入
多用 background 操作,不要等待响应 磁盘同步尽量设置大点或者干脆关闭 |
3
9hills 2015-09-12 22:36:43 +08:00
1. 使用 Bulk Write
2. 保证网卡不是瓶颈 3. sharding 是有效果的,甚至可以先 split ,然后将 split 后的数据分别发送到不同的分片。 4. sharding key 不能用 ObjectID 这种和 timestamp 有关的 key ,应该用 hash key ( mongodb 能自动这么搞),这样避免写入落入一个分片 |
5
liuzhen OP @cevincheung 谢谢
|
6
liuzhen OP @9hills 再请教一下,分片后不是通过连接 mongos 操作数据吗?怎么直接将数据发送到指定的分片呢?
|
7
9hills 2015-09-12 22:56:53 +08:00
|
8
Keita1314 2015-09-12 23:07:35 +08:00
|
13
9hills 2015-09-12 23:27:00 +08:00
@Keita1314 600 有点慢,可以看 http://docs.mongodb.org/master/core/write-performance/
不过 mongodb 的 insert 和数据量有关的部分就只有 index 了,控制 index 数量吧。。。 |
14
liuweisj 2015-09-13 08:36:20 +08:00
先查查你的瓶颈是什么把, 一般可能是磁盘 io 和内存
|