【发布时间】:2017-07-09 21:25:14
【问题描述】:
当百万线程同时尝试read from 和write to MongoDB 时会发生什么?锁定发生在db-level, table-level or row-level 上吗?
【问题讨论】:
当百万线程同时尝试read from 和write to MongoDB 时会发生什么?锁定发生在db-level, table-level or row-level 上吗?
【问题讨论】:
它发生在数据库级别,但是在 Mongo 2.0 中,有一些并发方法,例如通过 _id 字段插入/更新。
【讨论】:
您可能会遇到并发问题,尤其是在使用单个 MongoDB 实例而不是分片集群时。线程可能会在等待写入和其他操作完成并释放锁时开始相互阻塞。
MongoDB 中的锁定发生在实例的全局级别,但是 v2.0 之后的一些操作将产生它们的锁定(通过 _id 更新、删除、长游标迭代)。集合级别的锁定可能很快就会被添加。
如果需要有大量线程访问MongoDB,可以考虑在前面放一个队列来吸收并发争用的影响,然后从单个线程依次执行排队的操作。
【讨论】: