mongodb读取或写入操作是否会产生锁定?

参与4

1同行回答

lxuelxue数据库管理员某互联网公司
在某些情况下,读写操作可以产生锁定。长时间运行的读写操作(例如查询,更新和删除)在许多条件下都会产生。 MongoDB 操作还可以在写入操作中的单个文档修改之间产生锁定,这些修改会影响多个文档,例如使用 multi 参数的 update() 。对于支持文档级并发控制的存储引擎,例如 WiredTi...显示全部

在某些情况下,读写操作可以产生锁定。

长时间运行的读写操作(例如查询,更新和删除)在许多条件下都会产生。 MongoDB 操作还可以在写入操作中的单个文档修改之间产生锁定,这些修改会影响多个文档,例如使用 multi 参数的 update() 。

对于支持文档级并发控制的存储引擎,例如 WiredTiger ,在访问存储时不需要屈服,因为意图锁保存在全局,数据库和集合级别,不会阻止其他读者和编写者。但是,操作会定期产生,例如:

避免长期存储事务,因为这些可能需要在内存中保存大量数据 ;

作为中断点,以便你可以杀死长时间运行 ;

允许需要对集合进行独占访问的操作,例如索引 / 集合删除和创建。

MongoDB 的 MMAPv1 存储引擎使用基于其访问模式的启发式方法来预测在执行读取之前数据是否可能存在于物理内存中。如果 MongoDB 预测数据不在物理内存中,则当 MongoDB 将数据加载到内存中时,操作将产生锁定。一旦数据在内存中可用,操作将重新获取锁以完成操作。

收起
互联网服务 · 2020-01-13
浏览1410

提问者

yeliye
数据库管理员某农信
擅长领域: 数据库大数据服务器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-01-10
  • 关注会员:2 人
  • 问题浏览:2543
  • 最近回答:2020-01-13
  • X社区推广