MongoDB的数据库级别锁是什么?

7
1个回答

12
如果您查找读写锁,您会发现它与MySQL在使用“行级锁定”短语时所指的数据库锁定是完全不同类型的。 读写锁 用于保护共享内存访问,因此生命周期极短(约为微秒级别)。由于在MongoDB中操作仅在文档级别上是原子性的,因此这些锁(在传统数据库中有时称为闩锁(latches)并用于保护索引访问)仅在单个文档在内存中更新的时间持有。
常规的“数据库锁”通常会一直存在,直到正在进行的事务已提交或回滚。由于RDBMS事务可以跨越许多表执行多个操作,因此这些锁通常寿命较长,因此必须更细粒度地允许其他工作并发执行。
“这是否意味着,理论上,mongodb对于并发访问比MySQL慢2个级别?”
不,实际上并非如此,根据您的确切工作负载,可能更快或更慢-这完全取决于您进行的操作类型、可用的物理资源、数据结构以及应用程序的需求。
在MongoDB中向数据库写入大量数据的应用程序通常受可用磁盘IO吞吐率的限制。仅当可用磁盘带宽超过应用程序对数据库的写入量时,才会看到并发性成为MongoDB的因素。在关系型数据库中,由于锁定的寿命较长,即使总数据量相对较小,同时并发性也可能变得更早成为一个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接