oracle行级锁和表级锁的区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle行级锁和表级锁的区别?相关的知识,希望对你有一定的参考价值。

oracle中 描述行级锁和表级锁的区别。

区别:

1、表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作都不限制。 行级锁之前需要先加表结构共享锁。锁定整个表,限制对于其他用户对表的访问。

2、行级锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select。行级锁之前需要先加表结构共享锁。对目前被修改的行进行锁定,其它用户可访问被锁定的行以外的行。

基本说明:

1、行级锁是mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率低,并发度高;

2、表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MyISAM与InnoDB都支持表级锁定。表级锁定分为表共享读锁与表独占写锁。不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。

参考技术A 行级锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select。行级锁之前需要先加表结构共享锁。

表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作都不限制。
行级锁之前需要先加表结构共享锁。

根据锁的类型分,共有6种
LMODE
1、NULL,可以某些情况下,如分布式数据库的查询会产生此锁。
2、SS,表结构共享锁
3、SX,表结构共享锁+被操作的记录的排它锁
4、S, 表结构共享锁+所有记录共享锁
5、SRX 表结构共享锁+所有记录排它锁
6、X 表结构排它锁+所有记录排它锁
参考技术B 锁定的范围不一样啊,行级锁锁定的是相关的行,别人仍然可以操作该表的其他行;而表级锁则锁定整个表,其他人对该表的访问会受到更多的限制。所以,二者的主要区别就是锁的粒度不一样,带来的结果及时并发能力的不同。锁的粒度越细,并发性越好。

以上是关于oracle行级锁和表级锁的区别?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL行级锁和表级锁

数据库中的锁

innodb基本的行级锁和表级锁

mysql中的行级锁,表级锁和页级锁

Mysql全局锁和表级锁

mysql insert into select 语句为啥会造成死锁