当百万个线程同时尝试read from
和write to
MongoDB
时会发生什么?锁定发生在db-level, table-level or row-level
上?
答案 0 :(得分:3)
它发生在db-level,但是对于Mongo 2.0,有一些并发方法,例如_id字段插入/更新。
答案 1 :(得分:1)
您可能会遇到并发问题,尤其是在您使用单个MongoDB实例而不是分片群集时。线程可能会在等待写入和其他操作完成并锁定被释放时开始相互阻塞。
MongoDB中的锁定发生在实例的全局级别,但是从v2.0开始的一些操作将产生它们的锁(通过_id,remove,long cursor iteration进行更新)。很快就会添加集合级锁定。
如果您需要有大量线程访问MongoDB,请考虑在前面放置一个队列以吸收并发争用的影响,然后从单个线程顺序执行排队操作。