MongoDB读/写锁

Hir*_*del 4 mysql locking mongoose mongodb node.js

我打算使用nodejs创建一个应用程序,用户可以对产品进行评级.据我所知,mongodb中的锁与mySql不同.

我担心如果让10个用户同时对某个产品进行投票,Mongodb无法处理它,其他用户看到的结果是不正确的.

我看了类似的问题,但我仍然感到困惑!mongodb是一个不错的选择还是我应该使用Mysql?我很感激你的帮助

Cyn*_*mer 6

在MongoDB文档中的此并发常见问题中描述了锁定.特别是:

MongoDB使用读写器锁定,允许对数据库进行并发读取访问,但允许对单个写入操作进行独占访问.

当存在读锁时,许多读操作可能使用此锁.但是,当存在写锁定时,单个写入操作将独占地保持锁定,并且没有其他读取或写入操作可以共享锁定.

锁是"作家贪心",这意味着写锁优先于读取.当读取和写入都在等待锁定时,MongoDB会将锁定授予写入.

所以关于你的陈述:

Mongodb无法处理它,其他用户看到的结果不正确.

MongoDB采用数据库范围的锁定,可防止在数据库中某处执行写入操作时进行读/写操作.通过这个JIRA项目的外观,这将在未来简化为集合级锁定(现在它只是在开发版本中).此外,由于"作者贪婪"的方法,如果等待执行多次写入,它们将在任何读取之前完成,因此您的关注不应成为问题.

  • 2018 年的事态值得一提——在wildtiger(mongo 3.2 中的默认引擎)中,有文档级锁定。 (2认同)