update效率问题

发布问题 回首页

update效率问题

★ 0 成为第一个关注这个问题的人

在我们的数据库库log中发现很多慢查询log,这些log都是update操作,类如
2018-10-24T12:28:05.236+0800 I COMMAND [conn8457616] update QYZZANDMainDB.RoleTable query: { _id: “5BB478B3118BDB52632A26F0″, info.sceneInfos.id: 120 } update: { $set: { info.sceneInfos.$: { id: 120, intraday_buy_count: 0, passNum: 4, starIndex: 7 } } } keysExamined:1 docsExamined:1 nMatched:1 nModified:1 keyUpdates:0 writeConflicts:40 numYields:41 locks:{ Global: { acquireCount: { r: 43, w: 43 } }, Database: { acquireCount: { w: 43 } }, Collection: { acquireCount: { w: 42 } }, Metadata: { acquireCount: { w: 1 } }, oplog: { acquireCount: { w: 1 } } } 790ms
2018-10-24T12:28:05.286+0800 I COMMAND [conn13453782] update QYZZANDMainDB.RoleTable query: { _id: “5BCBF1B2AE2AE06F45047916″ } update: { $addToSet: { info.items: { advLevel: 0, auenchcastinfo: [], auenchexp: 0, baseLevel: 0, cardAdvLevel: 0, cardCGState: 0, cardExp: 0, cardLevel: 0, cardSkillLevel: 0, changegodlevelinfo: [], curNum: 1, haveCard: 0, id: 13003, intensifyCost: 0, mongodbID: “5BCFF4CEAE2AE06F45060C88″, panelPos: -1, patrnerLevel0: 0, patrnerLevel1: 0, patrnerLevel2: 0, patrnerLevel3: 0, trainATK: 0, trainCost1: 0, trainCost2: 0, trainHP: 0, trainMDEF: 0, trainPDEF: 0 } } } keysExamined:1 docsExamined:1 nMatched:1 nModified:1 keyUpdates:0 writeConflicts:46 numYields:47 locks:{ Global: { acquireCount: { r: 49, w: 49 } }, Database: { acquireCount: { w: 49 } }, Collection: { acquireCount: { w: 48 } }, Metadata: { acquireCount: { w: 1 } }, oplog: { acquireCount: { w: 1 } } } 1304ms
我在查看问题的过程中发现这应该是我们设计的表不合理,单个文档的数据太大了,经过查询发现有100k以上的文档。
我想问下,文档的大小和插入操作效率之间的关系是怎么样的。
在对单条属性或者数组中的单个对象做频繁的update操作的场景中,文档应该怎么设计,文档大小应该限制的多少,如果是对整个文档做update操作的场景中,操作频率和文档大小之间又应该保持在一个什么样的关系。谢谢!
mongo版本3.2

ayongbc@sina.com 在大约 之前添加了 Open 状态
  • 提问于
  • Answers0 个
  • 浏览 3 次
  • 最新活跃于

问题状态

  • Open

类别

1 个 参与者

update效率问题》有13个想法

  1. 谢答,但个人认为不准确,1.mr我觉得不适合实时计算,更贴合后期数据统计需求,2.aggregate必须支持自定义函数,就好像你定义个abc(1,2)一样肯定是计算了,现在的问题是abc(1,2)这个参数我想传个字段进去,比如abc($qty,2)这样….他就不好使了….难道大家没有在aggregate中用字段进行计算的经历么?

发表评论