快捷搜索: 王者荣耀 脱发

【学习笔记】数据库中锁的分类

从锁的共享性/数据库管理角度划分,可以将锁分为共享锁和排它锁。

共享锁(S锁):又称读锁,用于不修改数据的只读操作,如select语句。当一个事务对数据加共享锁后,其他事务只能对相同的事务再加共享锁,而不能加排它锁。获取共享锁的事务只能读取数据,而不能修改数据。

排它锁(X锁):又称写锁,用于修改数据的操作,如insert、update、delete语句。当一个事务对数据加排它锁后,其他事务不能再对该数据加任何锁。获取排它锁的事务既能读取数据,又能修改数据。

从加锁方式/程序员角度划分,可以将锁分为乐观锁和悲观锁。

乐观锁:加锁时采取乐观的态度,即不会出现冲突,先操作,若无冲突则直接成功,若冲突再处理。

悲观锁:加锁时采取悲观的态度,即一定会出现冲突,无论有冲突,都先加锁,再操作。

从枷锁的粒度划分,可以将锁分为行锁和表锁等。

行锁:把数据库表的一行锁定,开销大,锁粒度小,发生冲突几率小,并发性高。

表锁:把数据库的整张表锁定,开销小,锁粒度大,发生冲突几率大,并发性低。

经验分享 程序员 微信小程序 职场和发展