DB 锁(数据库锁)是一种用于实现数据库并发控制的机制。在多用户同时访问和操作数据库时,为了保证数据的一致性和完整性,需要对数据库中的数据进行加锁。加锁后,其他用户在解锁之前无法对加锁的数据进行修改或删除操作。
数据库锁可以分为以下几种类型:
共享锁(Shared Locks):也称为读锁。当一个事务正在读取某个数据时,对该数据加共享锁。其他事务可以继续对数据加共享锁,也就是可以继续读取数据,但不能对数据加排他锁,也就是不能修改或删除数据。
排他锁(Exclusive Locks):也称为写锁。当一个事务正在修改或删除某个数据时,对该数据加排他锁。其他事务既不能对数据加共享锁,也不能加排他锁,也就是不能读取、修改或删除数据。
意向锁(Intention Locks):意向锁是一种较高级别的锁,用于表示事务对某份数据的访问意向。当一个事务打算对某个数据进行读取、修改或删除操作时,可以先加意向锁。其他事务在解锁之前不能对数据加任何类型的锁。
幻读锁(Phantom Locks):幻读锁是一种特殊的锁,用于防止幻读(Phantom Read)现象。幻读是指在一个事务内多次查询同一范围的记录时,由于其他事务的插入或修改操作导致结果集不一致的现象。幻读锁可以防止这种情况发生,保证查询结果的一致性。
DB 锁可以有效地控制数据库的并发访问,避免数据不一致和丢失。但是,过度的加锁可能导致性能下降,因此需要根据实际情况选择合适的锁策略。