今天开始事务的学习,要学习的章节为《19 | 事务开发:写操做事务》,其实主要就是讲一个参数writeConcern。安全
以前第一章咱们学过,生产环境中MongoDB最少也是须要一个3结点的集群的。那么writeConert就是用于控制在数据写入时,数据写入多少个结点才算成功。网络
> db.test.insert({count: 1}, {writeConcern: {w: 3})
• 虽然多于半数的 writeConcern 都是安全的,但一般只会设置 majority,由于这是等待写入延迟时间最短的选择;
• 不要设置 writeConcern 等于总节点数,由于一旦有一个节点故障,全部写操做都将失败;
• writeConcern 虽然会增长写操做延迟时间,但并不会显著增长集群压力,所以不管是否等待,写操做最终都会复制到全部节点上。设置 writeConcern 只是让写操做等待复制后再返回而已;
• 应对重要数据应用 {w: “majority”},普通数据能够应用 {w: 1} 以确保最佳性能。性能
须要搭建一个3节点的测试环境学习
db.test.insert( {count: 1}, {writeConcern: {w: "majority"}}) db.test.insert( {count: 1}, {writeConcern: {w: 3 }}) db.test.insert( {count: 1}, {writeConcern: {w: 4 }})
conf=rs.conf() conf.members[2].slaveDelay = 5 conf.members[2].priority = 0 rs.reconfig(conf)
db.test.insert( {count: 1}, {writeConcern: {w: 3}}) db.test.insert( {count: 1}, {writeConcern: {w: 3, wtimeout:3000 }})
今天主要学习了写操做中,writeConcern参数的使用方法,建设设置为 majority,这也是系统的默认值,保证大多数结点写入数据的成功。测试