MONGODB 数据库文件读取的优化

上线不久的一个项目,突然反映速度变得慢了很多。


测试插入数据:



> for (i = 1; i <= 100000; i++){

...
... db.test_customer.insert({
... "_id" : i,
... "user_id" : i

(30个字段)

})



测试插入结果如下:

> db.test_customer.find({},{_id:1,create_dt:1}).sort({_id:-1}).limit(2)
{ "_id" : 11176, "create_dt" : ISODate("2014-07-22T03:10:10.435Z") }

{ "_id" : 11175, "create_dt" : ISODate("2014-07-22T03:10:10.420Z") }


> db.test_customer.find({},{_id:1,create_dt:1}).sort({_id:1}).limit(2)
{ "_id" : 1, "create_dt" : ISODate("2014-07-22T03:01:23.935Z") }
{ "_id" : 2, "create_dt" : ISODate("2014-07-22T03:01:24.187Z") }
>

看到插入的时间差,1万多条记录。花了10分钟了。

怎么会这么慢呢。


后使用 mongotop 查看,访问集中在一个文档的读写中。


在使用另一个mongod 进程测试插入数据,发现 同样的代码,插入数据是正常的。1万数据也就几秒。

使用此方法排除了服务器硬件及服务器配置的问题。

mongod -port [otherport]  dbpath=/otherpath/otherdb


分析怀疑可能是数据库文件读写数据的瓶颈。

决定把访问读写特别多的那个 文档 【表】 分到另建立的一个数据库中去。


完成后,再测试插入。

再看插入的数据:



> db.test_customer.find({},{create_dt:1}).sort({_id:1}).limit(2)
{ "_id" : 1, "create_dt" : ISODate("2014-07-22T10:06:51.502Z") }
{ "_id" : 2, "create_dt" : ISODate("2014-07-22T10:06:51.509Z") }

> db.test_customer.find({},{create_dt:1}).sort({_id:-1}).limit(2)
{ "_id" : 10000, "create_dt" : ISODate("2014-07-22T10:06:58.016Z") }
{ "_id" : 9999, "create_dt" : ISODate("2014-07-22T10:06:58.015Z") }

>

可以看到 只用了7秒,比以前好多了。


看来还是有文件读写瓶颈。能分开的数据,还是分成多个数据库最好。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值