您现在的位置是:课程教程文章
MongoDB使用什么类型的锁?
2023-12-15 20:54课程教程文章 人已围观
-
【赵强老师】MongoDB插入数据
【赵强老师】MongoDB插入数据这里将介绍如何将数据插入到MongoDB的集合中。文档的数据结构和JSON基本一样。... -
电解原理及其电解反应类型
电解原理及其电解反应类型这是一节新课,适合高二学生及高三复习,内容全面详细。... -
【赵强老师】MongoDB地理信息数据的查询
【赵强老师】MongoDB地理信息数据的查询MongoDB提供了一系列的索引和查询机制来处理地理空间信息。 表面 在您存储地理... -
从0学习mongodb4运维与开发
从0学习mongodb4运维与开发1 mongo在Linux下的安装 2 mongo如何进行增删改查 3 mongo使用管道和聚合 4 mongo复制集...
MongoDB使用多粒度锁,允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合级别下实现自己的并发控制(例如,在WiredTiger中的文档级别)。MongoDB使用读写器锁定,允许并发读取器共享访问资源(如数据库或集合),但在MMAPv1中,可以对单个写入操作进行独占访问。
除了用于读取的共享(S)锁定模式和用于写入操作的独占(X)锁定模式之外,意图共享(IS)和意图排它(IX)模式指示使用更精细的粒度锁定来读取或写入资源的意图。 以某个粒度锁定时,使用意图锁可以锁定所有更高级别。
例如,在锁定集合以进行写入时(使用模式X),必须在intent exclusive(IX)模式下锁定相应的数据库锁和全局锁。单个数据库可以同时锁定在IS和IX模式,但是排它(X)锁不能与任何其他模式共存,并且共享(S)锁只能与意图共享(IS)锁共存。
锁是公平的,读取和写入按顺序排队。但是,为了优化吞吐量,当一个请求被授予时,所有其他兼容请求将同时被授予,可能在冲突请求之前释放它们。例如,考虑刚刚释放X锁的情况,其中冲突队列包含以下项:
IS→IS→X→X→S→IS
在严格的先进先出(FIFO)排序中,只授予前两种IS模式。 相反,MongoDB实际上将授予所有IS和S模式,一旦它们全部耗尽,它将授予X,即使新的IS或S请求在此期间已排队。
在db.serverStatus() 和 db.currentOp() 输出中,锁定模式表示如下:
锁模式
说明
R
共享(S)锁
W
排他(X)锁定
r
意图共享(IS)锁
w
Intent Exclusive(IX)锁
课程教程:MongoDB使用什么类型的锁?上一篇:ThinkPHP配置文件的方法
下一篇:没有了