面试题答案
一键面试锁机制基本原理
MongoDB 在事务中使用锁机制来确保数据的一致性和并发控制。其原理基于对资源(如文档、集合、数据库等)加锁,不同事务在访问共享资源时,通过获取相应锁来避免数据冲突。
锁的类型
- 共享锁(读锁,S锁):多个事务可以同时获取共享锁来读取数据。这是因为读取操作本身不会修改数据,所以多个读操作之间不会产生冲突。例如,多个用户同时查询某个集合的数据,都可以获取共享锁进行读取。
- 排他锁(写锁,X锁):排他锁用于写操作,一个资源在同一时间只能被一个事务获取排他锁。当一个事务获取了排他锁,其他事务无论是读还是写操作都不能再获取该资源的锁,直到持有排他锁的事务释放锁。例如,对某个文档进行更新操作,就需要获取排他锁,以防止其他事务同时修改该文档。
在事务操作中的作用
- 共享锁在事务操作中的作用:在事务读取数据时,获取共享锁,这样可以允许多个事务并发读取数据,提高了读操作的并发性能。同时,持有共享锁的事务能保证在读取期间数据不会被其他事务修改,维持数据的一致性。
- 排他锁在事务操作中的作用:在事务进行写操作(插入、更新、删除)时,获取排他锁。排他锁可以防止其他事务对同一资源进行读写操作,从而保证写操作的原子性和一致性。只有当持有排他锁的事务提交或回滚后,其他事务才能再次获取锁进行操作。