首页 > 其他分享 >mongo并发与锁

mongo并发与锁

时间:2024-07-18 14:07:35浏览次数:16  
标签:mongo 独占 写入 模式 并发 共享 锁定 意向

除了用于读取的共享 (S) 锁定模式和用于写入操作的独占 (X) 锁定模式之外,意图共享 (IS) 和意图独占 (IX) 模式表示使用更细粒度的锁来读取或写入资源的意图。按一定粒度锁定时,所有更高级别都使用意向锁

例如,当锁定一个集合进行写入(使用模式 X)时,相应的数据库锁和全局锁都必须以意向独占 (IX) 模式锁定。单个数据库可以同时以 IS 和 IX 模式锁定,但独占 (X) 锁不能与任何其他模式共存,共享 (S) 锁只能与意向共享 (IS) 锁共存。

锁是公平的,读取和写入的锁请求都会按顺序排队。然而,为了优化吞吐量,批准一个锁请求时,也会同时批准所有其他兼容的锁请求,这可能会导致在执行冲突的锁请求之前释放锁。例如,当一个 X 锁刚被释放并且冲突队列包含这些锁:

IS → IS → X → X → S → IS

 

 

下表列出一些操作及其为文档级锁定存储引擎使用的锁类型:

   
操作 Database Collection
发出查询 r (意向共享) r (意向共享)
Insert data w (意向独占) w (意向独占)
删除数据 w (意向独占) w (意向独占)
Update data w (意向独占) w (意向独占)
执行聚合 r (意向共享) r (意向共享)
创建索引(前景) W (独占)  
创建索引(背景) w (意向独占) w (意向独占)
listCollections r (意向共享)  
map-reduce W (独占)和 R(共享) w (意向独占)和 r(意向共享)

 

标签:mongo,独占,写入,模式,并发,共享,锁定,意向
From: https://www.cnblogs.com/wonchaofan/p/18309404

相关文章

  • 论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(上)
    前言数据库并发,数据审计和软删除一直是数据持久化方面的经典问题。早些时候,这些工作需要手写复杂的SQL或者通过存储过程和触发器实现。手写复杂SQL对软件可维护性构成了相当大的挑战,随着SQL字数的变多,用到的嵌套和复杂语法增加,可读性和可维护性的难度是几何级暴涨。因此如何在实......
  • 并发问题的三大根源是什么?
    1.前言从进程与线程中我们了解到,一个任务中CPU的的运算速度要远远大于I0的速度,当CPU和IO一起协作时就容易产生问题,一个任务在等待I0的时候,CPU无法进行工作,所以后续为了提高CPU的利用率,进程中诞生线程,CPU添加缓存,编译程序优化指令执行次序,使得缓存能够得到更加合理地利用但是与之......
  • 【面试题】MVCC多版本并发控制
    多版本并发控制指的就是维护一个数据的多个版本,,是得读写操作没有冲突;MVCC和锁(排他锁)也是事务隔离性的保证就好比以下的例子,我们查询id为30的记录到底是查询的是哪个事务所有修改的数据呢?这个就是MVCC的特点了,MVCC可保证我们读写操作没有冲突MVCC的具体实现,主要是依赖于数据......
  • MongoDB 显示数量方式 , count结果与实际不符合
    直接count结果db.cdc_o2k_kafka_mongoDB.count()//8798768官方解释不准确的原因:a.操作的是分片的集合(前提);b.shard分片正在做块迁移,导致有重复数据出现c.存在孤立文档(因为不正常关机、块迁移失败等原因导致)db.cdc_o2k_kafka_mongoDB.aggregate([{......
  • 如何生成好看的zabbix告警报表并发送邮件
    作者乐维社区(forum.lwops.cn) 许远一、场景模拟小东是一名资深的IT运维人员,其直属领导想要了解公司业务系统的健康状态以及小东日常的工作情况等,要求小东每周统计系统告警情况并发邮件给到他。小东所在公司搭建了一套zabbix开源监控,于是小东利用自己的专业知识,实现了zabbix告......
  • Java开发手册中-锁并发-同步调用应该去考量锁的性能损耗-加锁与不加锁性能对比
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751参考以上性能测试工具的使用。Java中数据同步-synchronized关键字与Mointor(jconsole)的使用:https://blog.csdn.net/......
  • 并发工具类
    文章目录一、Semaphore1.1作用1.2Semaphore的原理二、CountDownLatch2.1作用2.2CountDownLatch的原理2.3使用场景三、CyclicBarrier3.1作用3.2CyclicBarrier的原理Java的并发工具类提供了一系列方便实用的方法,用于简化多线程编程。以下是一些常见的并发......
  • 麒麟sp3安装mongodb报错
    环境:OS:麒麟V10sp3db:4.4.22 [root@localhostconf]#/usr/local/services/mongodb/bin/mongod-f/home/middle/mongodb/conf/mongo.cnf/usr/local/services/mongodb/bin/mongod:errorwhileloadingsharedlibraries:libcrypto.so.10:cannotopensharedobjectfile:......
  • 数据库必知必会-MongoDB
    文章目录1.关系型数据库与非关系型数据库2.MongoDB是最接近关系型数据库的非关系型数据库3.mongodb数据库的基本概念MongoDB命令5.4.node.js操作mongodb(所有对mongodb数据库操作都是异步的)总结1.关系型数据库与非关系型数据库关系型数据库是指表与表之间存在......
  • Linux安装mongodb
    1.安装包下载wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.27.tgz2.安装和启动2.1解压tar-zxvfmongodb-linux-x86_64-rhel70-4.0.27.tgz2.2将解压后的目录移动到/usr/local目录下,并改名为mongodbmvmongodb-linux-x86_64-rhel7......