欢迎投稿

今日深度:

数据库锁的粒度,数据库锁粒度

数据库锁的粒度,数据库锁粒度


所谓粒度,即细化的程度。锁的粒度越大,则并发性越低且开销大;锁的粒度越小,则并发性高且开销小。

锁的粒度主要有以下几种类型:

(1)行锁,行锁是粒度中最小的资源。行锁就是指事务在操作数据的过程中,锁定一行或多行的数据,其他事务不能同时处理这些行的数据。行级锁占用的数据资源最小,所以在事务的处理过程中,允许其它事务操作同一表的其他数据。

(2)页锁,一次锁定一页。25个行锁可升级为一个页锁。

(3)表锁,锁定整个表。当整个数据表被锁定后,其他事务就不能够使用此表中的其他数据。使用表锁可以使事务处理的数据量大,并且使用较少的系统资源。但是在使用表锁时,会延迟其他事务的等待时间,降低系统并发性。

(4)数据库锁,防止任何事务和用户对此数据库进行访问。可控制整个数据库的操作。


用锁效率会降低,可通过使用表锁来减少锁的使用从而保证效率。



数据库锁表是什?

锁表的概念稍微有点大,建议楼主找相关资料看一下数据库锁的相关知识。
举个简单例子:在更新数据库记录的过程中,我是不希望别人也来更新我的这些记录的,像库存,做出库的时候,原数量100,我出了20,我就需要把数量更新到80,在更新的过程中,别人又做了30的出库,如果在我更新的时候,别人先把库存更新到70,然后我又更新80,那数量就错误了。所以我更新的时候,我就需要锁定这条记录。这是数据行锁,排他锁。
这只是一个简单的例子,数据库的锁机制远比这个情景复杂。
锁从类型上讲,有共享锁,意向锁,排他锁。上面的例子是排它锁。
从锁的粒度角度来说,可以分为为行、页、键、键范围、索引、表或数据库获取锁。(锁粒度是被封锁目标的大小,封锁粒度小则并发性高,但开销大,封锁粒度大则并发性低但开销小)上面的例子中的锁粒度是行锁。
 

数据库死锁

你是不是锁的粒度设置的太大了,把整个数据库都加锁了。可以只对用户操作的那部分加锁。
还有是不是打开了数据库,没有及时关闭数据库,导致锁不能及时释放。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3763.html NewsArticle 数据库锁的粒度,数据库锁粒度 所谓粒度,即细化的程度。锁的粒度越大,则并发性越低且开销大;锁的粒度越小,则并发性高且开销小。 锁的粒度主要有以下几种类型: (1)行锁,...
评论暂时关闭