【问题标题】:Changing MongoDB Isolation level when Mongo Sessions involved涉及 Mongo 会话时更改 MongoDB 隔离级别
【发布时间】:2020-02-10 18:22:12
【问题描述】:

在使用事务时,MongoDB4.0 的默认隔离级别是什么。

一个文档说 READ UNCOMMITTED 是默认隔离级别。https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/

另一个文档说快照是使用事务时的默认隔离级别。 https://www.percona.com/blog/2018/06/25/mongodb-transactions-your-very-first-transaction-with-mongodb-4-0/

哪一个是正确的?可以改吗?

【问题讨论】:

标签: mongodb transactions isolation-level


【解决方案1】:

MongoDB 允许客户端通过组合写入关注点、读取关注点和会话的使用来根据要求确定所需的隔离级别。

关于事务(需要使用会话),默认隔离是快照。

读取未提交是默认的隔离级别没有使用会话,根据Read Isolation, Consistency, and Recency

可以自定义事务的读写关注点。见:

除非您有需要特定隔离级别的特定用例,否则最好将此设置保留为默认设置。

【讨论】:

  • 请注意,snapshot 隔离是使用 MongoDB 事务可以实现的最佳隔离,但不能使用默认设置!实现它,您必须设置readConcern=snapshotwriteConcern=majority 在连接字符串/会话/事务上(而不是在数据库/集合/操作上,因为在事务数据库/集合/操作下的关注设置被忽略) .见jepsen.io/analyses/mongodb-4.2.6
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2021-12-04
  • 2014-02-10
相关资源
最近更新 更多