MONGODB 資料庫檔案讀取的最佳化__資料庫

來源:互聯網
上載者:User

上線不久的一個項目,突然反映速度變得慢了很多。


測試插入資料:



> 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秒,比以前好多了。


看來還是有檔案讀寫瓶頸。能分開的資料,還是分成多個資料庫最好。






相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.