为何我的mongoDB写入数据这么慢?

湖桃 2015-12-04 06:04:02
我用mongoDB管理股票行情数据,目前已保存行情数据约120GB,在一个Quote集合中包含ticks(448903576条记录)和bids(622612318条记录)两个数据表,两个数据表都建立有日期和代码索引。使用的是mongoDB 3.0.7版64位版本。
最近发现写入数据时会非常慢,经常有时写入一条记录要10多秒,正常时写入一条记录是100ms左右。
摘取了部分log如下,请帮忙分析一下。能帮我分析一下原因吗?

2015-11-01T21:45:47.444+0800 I WRITE [conn31] insert quote.bids query: { _id: ObjectId('563617890bda790fc8b98d17'), code: "000893", price: 3.552713678800501e-015, volume: 2, flag: "00C", dt: new Date(1446212410000) } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 6, w: 6 } }, MMAPV1Journal: { acquireCount: { w: 702 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 109947 } }, Database: { acquireCount: { w: 6 } }, Collection: { acquireCount: { W: 6 } } } 110ms
2015-11-01T21:45:47.456+0800 I COMMAND [conn31] command quote.$cmd command: insert { insert: "bids", ordered: true, documents: 1000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 9, w: 9 } }, MMAPV1Journal: { acquireCount: { w: 1009 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 109947 } }, Database: { acquireCount: { w: 9 } }, Collection: { acquireCount: { W: 9 } } } 144ms
2015-11-01T21:46:08.731+0800 I COMMAND [conn31] command quote.$cmd command: insert { insert: "bids", ordered: true, documents: 1000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 9, w: 9 } }, MMAPV1Journal: { acquireCount: { w: 1009 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 69102 } }, Database: { acquireCount: { w: 9 } }, Collection: { acquireCount: { W: 9 } } } 104ms
2015-11-01T21:46:20.071+0800 I WRITE [conn31] insert quote.bids query: { _id: ObjectId('563617ab0bda790fc8bdf667'), code: "000916", price: 5.739999999999998, volume: 69, flag: "00B", dt: new Date(1446212949000) } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 4, w: 4 } }, MMAPV1Journal: { acquireCount: { w: 415 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 103010 } }, Database: { acquireCount: { w: 4 } }, Collection: { acquireCount: { W: 4 } } } 103ms
2015-11-01T21:46:20.093+0800 I COMMAND [conn31] command quote.$cmd command: insert { insert: "bids", ordered: true, documents: 1000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 9, w: 9 } }, MMAPV1Journal: { acquireCount: { w: 1009 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 103010 } }, Database: { acquireCount: { w: 9 } }, Collection: { acquireCount: { W: 9 } } } 137ms
2015-11-01T21:46:26.793+0800 I COMMAND [conn31] command quote.$cmd command: insert { insert: "bids", ordered: true, documents: 1000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 9, w: 9 } }, MMAPV1Journal: { acquireCount: { w: 1009 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 71011 } }, Database: { acquireCount: { w: 9 } }, Collection: { acquireCount: { W: 9 } } } 101ms
2015-11-01T21:46:36.054+0800 I COMMAND [conn31] command quote.$cmd command: insert { insert: "bids", ordered: true, documents: 1000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 9, w: 9 } }, MMAPV1Journal: { acquireCount: { w: 1009 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 73748 } }, Database: { acquireCount: { w: 9 } }, Collection: { acquireCount: { W: 9 } } } 113ms
2015-11-01T21:46:51.225+0800 I STORAGE [DataFileSync] flushing mmaps took 63267ms for 12 files


*****以下是最近异常的log记录*****
2015-11-29T08:29:59.714+0800 I WRITE [conn65] insert quote.ticks query: { _id: ObjectId('565a46d50bda79121c058f73'), code: "603066", price: 58.43, volume: 1.0, dt: new Date(1448631616000), side: "S" } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 115, w: 115 } }, MMAPV1Journal: { acquireCount: { w: 527 }, acquireWaitCount: { w: 12 }, timeAcquiringMicros: { w: 122008 } }, Database: { acquireCount: { w: 115 } }, Collection: { acquireCount: { W: 115 }, acquireWaitCount: { W: 115 }, timeAcquiringMicros: { W: 2526086 } } } 140ms
2015-11-29T08:29:59.714+0800 I WRITE [conn63] insert quote.ticks query: { _id: ObjectId('565a46f70bda791154306e11'), code: "600395", price: 8.050000000000001, volume: 78.0, dt: new Date(1448617010000), side: "S" } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 409, w: 409 } }, MMAPV1Journal: { acquireCount: { w: 1761 }, acquireWaitCount: { w: 25 }, timeAcquiringMicros: { w: 115750 } }, Database: { acquireCount: { w: 409 } }, Collection: { acquireCount: { W: 409 }, acquireWaitCount: { W: 409 }, timeAcquiringMicros: { W: 13637358 } } } 141ms
2015-11-29T08:29:59.714+0800 I WRITE [conn67] insert quote.ticks query: { _id: ObjectId('565a46e90bda79179838a80e'), code: "000790", price: 15.19, volume: 2.0, dt: new Date(1448619704000), side: "S" } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 224, w: 224 } }, MMAPV1Journal: { acquireCount: { w: 1255 }, acquireWaitCount: { w: 20 }, timeAcquiringMicros: { w: 50202 } }, Database: { acquireCount: { w: 224 } }, Collection: { acquireCount: { W: 224 }, acquireWaitCount: { W: 224 }, timeAcquiringMicros: { W: 5196956 } } } 141ms
2015-11-29T08:30:00.101+0800 I COMMAND [conn63] command quote.$cmd command: insert { insert: "ticks", ordered: true, documents: 1000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global: { acquireCount: { r: 421, w: 421 } }, MMAPV1Journal: { acquireCount: { w: 1842 }, acquireWaitCount: { w: 27 }, timeAcquiringMicros: { w: 133006 } }, Database: { acquireCount: { w: 421 } }, Collection: { acquireCount: { W: 421 }, acquireWaitCount: { W: 421 }, timeAcquiringMicros: { W: 13865934 } } } 16363ms
2015-11-29T08:30:01.036+0800 I WRITE [conn65] insert quote.ticks query: { _id: ObjectId('565a46d50bda79121c058fdf'), code: "603066", price: 58.7, volume: 5.0, dt: new Date(1448631877000), side: "S" } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 153, w: 153 } }, MMAPV1Journal: { acquireCount: { w: 711 }, acquireWaitCount: { w: 16 }, timeAcquiringMicros: { w: 123164 } }, Database: { acquireCount: { w: 153 } }, Collection: { acquireCount: { W: 153 }, acquireWaitCount: { W: 153 }, timeAcquiringMicros: { W: 3215329 } } } 108ms
...全文
2576 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonesle 2015-12-15
  • 打赏
  • 举报
回复
有索引的数据库,一旦记录(或文档)很大,比如超过千万条,写入就会慢。
junki 2015-12-10
  • 打赏
  • 举报
回复
几亿数据还好啊,你要检查内存,硬盘、索引和代码这些,优化是要慢慢调试的

1,747

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧