学习笔记数据库中锁的分类
Posted 棉花糖灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记数据库中锁的分类相关的知识,希望对你有一定的参考价值。
从锁的共享性/数据库管理角度划分,可以将锁分为共享锁和排它锁。
共享锁(S锁):又称读锁,用于不修改数据的只读操作,如select语句。当一个事务对数据加共享锁后,其他事务只能对相同的事务再加共享锁,而不能加排它锁。获取共享锁的事务只能读取数据,而不能修改数据。
排它锁(X锁):又称写锁,用于修改数据的操作,如insert、update、delete语句。当一个事务对数据加排它锁后,其他事务不能再对该数据加任何锁。获取排它锁的事务既能读取数据,又能修改数据。
从加锁方式/程序员角度划分,可以将锁分为乐观锁和悲观锁。
乐观锁:加锁时采取乐观的态度,即不会出现冲突,先操作,若无冲突则直接成功,若冲突再处理。
悲观锁:加锁时采取悲观的态度,即一定会出现冲突,无论有冲突,都先加锁,再操作。
从枷锁的粒度划分,可以将锁分为行锁和表锁等。
行锁:把数据库表的一行锁定,开销大,锁粒度小,发生冲突几率小,并发性高。
表锁:把数据库的整张表锁定,开销小,锁粒度大,发生冲突几率大,并发性低。
以上是关于学习笔记数据库中锁的分类的主要内容,如果未能解决你的问题,请参考以下文章
乐观锁和悲观锁的使用场景及应用——Java高并发系列学习笔记