本文主要是介绍Mongodb事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Mongodb的事务通常是指多文档之间,Mongodb从4.0版本开始支持副本集的多行多文档事务,4.2版本开始支持分布式事务,增加了分片集群上多行多文档事务的支持。
Write Concern
writeConcern决定一个写操作落到多少个节点上才算成功,writeConcern的取值包括:
- w:0 设置为0 无需关心写入成功与否
- w :1-任意节点数,最大数为复制集群节点数,默认为1 ,表示写到Primary节点就开始往客户端发送确认写入成功。
- w:majority 大多数节点成功原则,非具体数据,复制集群中的大多数。
- w:all 所有节点写入成功才算成功
- j:true 默认情况为false,写操作达到内存算完成,如果设置为j:true,写操作只有到达journal文件才算成功。
- wtimeout:写入超时实战
测试示例
writeConcern: {
w:"majority" // 大多数
j:true,
wtimeout: 6000,
}
建议:重要数据设置 w:"majority" 保证数据不丢失,普通数据设置w:1保证最优性能
Read Preference
readPreference 决定使用哪一个节点来满足 正在发起的读请求。可选值包括:
-
primary: 只选择主节点;
-
primaryPreferred:优先选择主节点,如果不可用则选择从节点
-
secondary:只选择从节点;
-
secondaryPreferred:优先选择从节点, 如果从节点不可用则选择主节点;
-
nearest:选择最近的节点
建议:primary/primaryPreferred:适合于数据实时性要求较高的场景,例如,订单创建完毕直接跳转到订单详情,如果选择从节点读取,可能会造成主节点数据写入之后,从节点还未复制的情况,因为复制过程是一个异步的操作。 secondary/secondaryPreferred:适应用于数据实时性要求不高的场景,例如,报表数据、历史订单。还可以减轻对主节点的压力。
这篇关于Mongodb事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!