Mongdb 脏读

读隔离(New in version 3.2.):

readConcern: { level:
<"majority"|"local"|"linearizable"> }

readConcern选项可用于以下操作:

用于副本集和副本集分片的readConcern查询选项确定从查询返回哪些数据。

readConcern级别:

"local":默认。
该查询返回实例的最新数据。
不保证数据已写入大多数副本集成员(即可以回滚)。

"majority":该查询会将实例的最新数据确认为已写入副本集中的大多数成员。要使用majority级别,您必须使用--enableMajorityReadConcern命令行选项启动mongod实例(如果使用配置文件,则将replication.enableMajorityReadConcern设置为true)。

"linearizable"(add in version3.4):该查询返回反映所有成功写入的数据。

这么说
如果配置了linearizable 那么针对一个集合的查询就可以避免脏读了。因为Mongdb没有事务,所以也就不存在幻读和不可重复读的定义了。不过这个功能是在当前最新的3.4版本才有的。

时间: 2024-12-18 02:28:33

Mongdb 脏读的相关文章

Mongdb事务和原子操作

首先,原则上说Mongdb没有事务的概念. 事务有ACID的概念,比如原子性,一个事务要么全部成功,要么全部失败. 如,考虑一个转账的业务,从A转账100到B,将分为两步: A = A - 100; B = B + 100; 在Mongdb中,如果A = A - 100;执行完,将会直接入库生效,没有回滚段的概念,所以如果此时B = B + 100;出现了问题,是不能回滚上一步A的操作的.所以说,Mongdb是没有原子性的. 然后说一致性,简单的来说读一致性,Mongdb都无法保证.Mongdb

NodeJS链接MongDB

创建一个mongdb.js var mongodb = require('mongodb') // 创建数据库服务的链接 var server = new mongodb.Server( 'localhost', 27017, { auto_reconnect: true} ) // 创建数据的连接 var db = new mongodb.Db( 'movies', server, { safe: true } ) // 测试数据库连接 db.open(function(err, db){ i

springMVC+ mongdb + redis +Jedis 环境搭建

环境信息: JDK1.7 : Eclipse 4.4.1 ; mongdb + mongVUE:mongDB的安装 redis的下载和安装:window下安装redis maven3.0.5 新建maven项目: pom.xml <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLo

mongdb Java demo

接触MONGDB,感觉用起来还挺好.今天做了一个小demo. 一.启动mongdb的服务 需要指定目录,这个目录是存放数据库的. 查看服务是否已经启动.可以查看端口(默认为27017)的状态. 二.编写JAVA代码 需要引入mongdb的JAR包. 编写代码: public class demo { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB

Mongdb操作嵌套文档

1.一个文档如下 db.posts.find() { "_id" : ObjectId("5388162dfc164ee1f39be37f"), "title" : "Java Example", "content" : "This is a example for Java!", "comments" : [] } 2.往_id等于"5388162dfc1

关于脏读、幻读和不可重复读

1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. e.g.         1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未提交事务)         2.Mary读取自己的工资 ,发现自己的工资变为了8000,欢天喜地!         3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000           像这样,Mary记取的工资数800

了解数据库中脏读+不可重复读+幻影读

"读现象"是多个事务并发执行时,在读取数据方面可能碰到的状况.先了解它们有助于理解各隔离级别的含义.其中包括脏读.不可重复读和幻读. 脏读: 脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的. 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交(commit)到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据.因为这个数据是还没有提交

使用synchronized(非this对象)同步代码块解决脏读问题

首先通过示例来学习验证多个线程调用同一个方法时随机的. package syn_out_asyn; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/1/19 0019. */ public class MyList { private List list = new ArrayList(); synchronized public void add(String u

[MongDB] 主从架构--官方极力不推荐

一.缘由: 看着数据库大家庭都有主从模式,想着Mongodb应该也不会落下.但从官网看来,先是早先舍弃了Master-Master模式,现在又在不推荐 Master-Slave模式,这是要标新立异呀.不过,也许大家都会觉得Replica Set的Primary故障自动转移.分片,用起来更爽一点,所以抛弃就 抛弃吧,但是目前还是要了解的. Mongodb Master-Slave模式,可支持读写分离:也可读写都在Master,Slave做备份.一旦Master挂掉,就要手动干预将从切换为主. 实践