`

行级锁表级锁总结

SQL 
阅读更多

1、DML锁包括行级锁(TX)和表级锁(TM)

2、行级锁不是单独存在的,当事务获得了某些数据行上的行级锁时,此事务同时获得了数据行所属表上的表级锁,因为表级锁能够防止系统中并发地执行有冲突的 DDL 操作,避免当前事务中的数据操作被并发地DDL 操作影响。

3、表级锁分为5种,限制程度升序排列:

   (1)行共享(row share):与行排他类似,区别是别的事务还可以在此表上加任何排他锁。(除排他(exclusive)外)

   (2)行排他(row exclusive):其他事务依然可以并发地对相同数据表执行查询,插入,更新,删除操作,或对表内数据行加锁的操作,但不能有其他的排他锁(自身是可以的,没发现有什么用)

   (3)共享(share):在表没有被任何DML操作时,多个事务都可加锁,但只有在仅一个事务加锁的情况下只有此事务才能对表更新;当表已经被更新或者指定要更新时(select for update),任何事务都不能加此锁了。

   (4)共享行排他(share row exclusive):在表没有被任何DML操作时,只有一个事务可以加锁,可以更新,书上说别的事务可以使用select for update锁定选中的数据行,可是实验后没被验证。

   (5)排他(exclusive):在表没有被任何DML操作时,只有一个事务可以加锁,可以更新,与共享行排他的区别还没有发现

 

    否允许锁操作?
 
SQL 语句 表级锁模式 RS RX S SRX X

SELECT...FROM table...
 

 
Y
 
Y
 
Y
 
Y
 
Y
 
INSERT INTO table ...
 
RX
 
Y
 
Y
 
N
 
N
 
N
 
UPDATE table ...
 
RX
 
Y*
 
Y*
 
N
 
N
 
N
 
DELETE FROM table ...
 
RX
 
Y*
 
Y*
 
N
 
N
 
N
 
SELECT ... FROM table
FOR UPDATE OF ...

 
RS
 
Y*
 
Y*
 
Y*
 
Y*
 
N
 
LOCK TABLE table IN ROW SHARE MODE
 
RS
 
Y
 
Y
 
Y
 
Y
 
N
 
LOCK TABLE table IN ROW EXCLUSIVE MODE
 
RX
 
Y
 
Y
 
N
 
N
 
N
 
LOCK TABLE table IN
SHARE MODE

 
S
 
Y
 
N
 
Y
 
N
 
N
 
LOCK TABLE table IN
SHARE ROW EXCLUSIVE MODE

 
SRX
 
Y
 
N
 
N
 
N
 
N
 
LOCK TABLE table IN EXCLUSIVE MODE
 
X
 
N
 
N
 
N
 
N
 
N


DML 语句 是否存在
行级锁
表级锁的
模式

SELECT ... FROM table
 
   
INSERT INTO table ...
 
X
 
RX
 
UPDATE table ...
 
X
 
RX
 
DELETE FROM table ...
 
X
 
RX
 
SELECT ... FROM table ... FOR UPDATE OF ...
 
X
 
RS
 
LOCK TABLE table IN ...
 
   
ROW SHARE MODE
 
  RS
 
ROW EXCLUSIVE MODE
 
  RX
 
SHARE MODE
 
  S
SHARE EXCLUSIVE MODE
 
  SRX
EXCLUSIVE MODE
 
  X

遗留问题:SELECT FOR UPDATE属不属于DML

分享到:
评论

相关推荐

    MySQL 全局锁、表级锁、行级锁

    在多用户环境中,为了保证数据的一致性和完整性,MySQL 提供了多种锁定机制,包括全局锁、表级锁和行级锁。这些锁机制是数据库事务处理中的核心组成部分,下面我们将详细探讨这些锁的特性和应用场景。 1. **全局锁...

    sybase锁表检查与解决方法

    WITH (TABLOCK)`: 在修改表结构时,可以使用此命令获得表级锁,确保其他操作不会并行进行。 四、bcp工具 `bcp`是Sybase的批量拷贝程序,用于高效地导入和导出大量数据。它支持多种操作,如: - 导出数据:`bcp ...

    Oracle五种表级排他锁的总结和归纳

    在本文中,我们将聚焦于五种表级排他锁,这些锁主要用于控制对表的访问权限和确保事务的隔离级别。排他锁是Oracle锁定策略的重要组成部分,它们限制了其他事务对特定资源的访问,以防止数据的不一致性和并发问题。 ...

    MySQL悲观锁总结和实践

    悲观锁的主要实现方式依赖于数据库提供的锁机制,特别是事务隔离级别中的行级锁或表级锁。只有数据库层面提供的锁机制才能确保数据访问的排他性,避免多线程或多事务环境下的并发冲突。若仅在应用层面上实现加锁机制...

    MYSQL锁机制

    InnoDB是MySQL中最常用的事务型存储引擎,它支持行级锁和表级锁,但在默认情况下使用行级锁。 ##### InnoDB行级锁的特点 - **高并发**:由于锁定的范围较小,可以更好地支持并发操作。 - **死锁检测**:InnoDB具有...

    对于Oracle锁的一些理论总结

    DML锁是本文的重点,它包括行级锁(row level lock)和表级锁(table level lock)。 1. 行级锁(TX):Oracle的行级锁并不像其他数据库那样,对每一行数据都单独加锁。实际上,Oracle采用事务级的行级锁,即TX锁。...

    informix锁表相关

    Informix 支持多种类型的锁,这些锁主要分为两大类:行级锁和表级锁。 1. 行级锁:这种锁针对数据库中的单行数据进行锁定,提高并发性能。行级锁包括共享锁(S 锁)和独占锁(X 锁)。共享锁允许读取一行,但不允许...

    mysql锁表1

    MySQL支持多种类型的锁,包括行级锁(如记录锁、间隙锁和Next-Key Locks),页级锁,以及表级锁。表级锁是最简单的形式,它将整个表视为一个单位进行锁定,分为读锁(共享锁,也称为S锁)和写锁(独占锁,也称为X锁...

    oracle锁表查询

    2. **表级锁**:用于锁定整个表,这种类型的锁通常由数据库管理系统自动管理。 3. **共享锁**(S锁):允许多个事务读取一行数据,但阻止其他事务获取该行上的排他锁。 4. **排他锁**(X锁):阻止其他事务获取任何...

    Oracle数据库的锁类型

    DML锁主要关注的是数据级别的锁控,包括TM锁(表级锁)和TX锁(事务锁或行级锁)。这些锁在执行DML(数据操纵语言)操作时自动触发,以确保数据在并发环境下的完整性和一致性。 ##### 1. TM锁:表级锁 TM锁是针对...

    SQLServer查询被锁的表和解锁.txt

    4. **避免使用表级锁**:尽可能使用更细粒度的锁定机制,如行级锁。 5. **异常处理**:在应用程序中实现有效的异常处理机制,确保能够正确地处理锁定和死锁的情况。 总结起来,理解和解决SQL Server中的锁定问题是...

    oracle_专家高级编程

    - **表级锁**:通常用于控制对整个表的访问,适用于较少并发操作的场景。 - **对象级锁**:用于保护存储过程等数据库对象。 ##### 6.4 Oracle与其他数据库的对比 - **Oracle的行级锁**:Oracle实现了高效的行级锁...

    基于轻量数据挖掘方法的数据库锁表优化研究.pdf

    例如,在更新单条记录时通常采用行级锁,而在批量更新大量数据时则可能使用表级锁。合理的锁粒度可以避免锁冲突,并且当行级锁的数量超过锁表的最大容量时,系统可以自动转换到更高级别的锁粒度,以保证系统的稳定...

    Oracle锁 图例

    2. 行级锁:行级锁比表级锁提供更细粒度的并发控制,分为行共享锁(Row Share Locks, RS locks)和行排他锁(Row Exclusive Locks, RX locks)。行共享锁只允许读取一行,行排他锁允许读取和修改一行。 3. 间隔锁...

    第16章 事务与锁的应用.ppt

    Oracle 提供了多种类型的锁,如行级锁、表级锁和块级锁,以满足不同级别的并发控制需求。 - 行级锁:锁定的是数据表中的单行记录,提供最细粒度的锁,减少锁冲突的可能性。 - 表级锁:锁定整个表,适用于锁定操作较...

    查看数据库锁和解锁方法

    2. **表级锁**:作用于整个表上。 3. **页级锁**:作用于数据库页上(介于行级和表级之间)。 4. **模式对象锁**:作用于数据库中的其他对象,如索引等。 #### 二、查看数据库锁状态 了解了基本概念之后,我们来看...

    MySQL与Java锁的学习

    MySQL数据库提供了多种锁机制来确保数据的一致性和完整性,主要分为两大类:行级锁和表级锁。 1. **行级锁**:这种类型的锁只锁定操作的数据行,允许其他事务在同一表的不同行上进行操作,提高了并发性。MySQL中的...

    MySQL:锁机制.pdf

    - InnoDB与MyISAM存储引擎的区别:InnoDB支持行级锁和事务,而MyISAM主要支持表级锁。 在使用过程中,应该根据实际的应用场景和性能需求,合理选择存储引擎和锁策略,以达到最优的并发控制效果。对于可能出现的锁争...

    【MySQL】锁(十三).pdf

    本文将详细讲解MySQL中的锁机制,包括全局锁、表级锁和行级锁等内容,并通过具体的例子帮助读者更好地理解和运用这些知识。 #### 二、全局锁 ##### 1. 介绍 全局锁是一种对整个数据库实例进行锁定的方式。当加锁...

Global site tag (gtag.js) - Google Analytics