`

数据库中的共享锁和排他锁

阅读更多

共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁:如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。

 

1、执行SELECT语句时可以获得共享锁。Oracle通过锁定指定表来确保没有人能够在你使用表数据时修改该表的结构,但是,被查询的记录并没有进行锁定。共享锁无法阻止其他用户读取和修改表中的数据,只能阻止其他用户使用ALTER TABLE命令改变指定表的结构或用DROP TABLE命令删除指定表。多个用户可以同时获得相同数据上的共享锁。

 

2、执行DML语句时可以获得排他锁,并且正在被修改的所有记录都会获得排他锁。在你启动的事务内,排他锁阻止其他用户获得正在处理的数据上的排他锁,直至执行COMMIT或ROLLBACK语句。这样,两个用户就无法同时更新相同的数据。某个用户试图更新被另一个用户锁定的数据时,第一个用户必须等待至去除排他锁后才能进行操作。

SELECT语句对正在查询的数据不进行锁定。

分享到:
评论

相关推荐

    sybase数据库查被锁的表.doc

    在 Sybase 数据库中,锁机制分为两种:共享锁(Shared Lock)和排他锁(Exclusive Lock)。共享锁允许多个事务同时读取同一个资源,而排他锁则排他事务访问该资源。锁机制可以在不同的粒度上生效,包括表锁、页锁和...

    事务的四大隔离级别、数据库中的共享锁与排他锁、MySQL 的行级锁与表级锁

    数据库相关的笔记

    数据库锁(行锁,表锁,共享锁,排他锁)脏读、不可重复读、幻读和事物隔离级别

    在MySQL的InnoDB引擎中,支持行级锁(Row Locks)、表级锁(Table Locks),以及共享锁(Shared Locks)和排他锁(Exclusive Locks)。行级锁通过索引实现,如果SQL语句没有利用索引,则会升级为表锁。 行锁具有...

    数据库中锁机制的学习

    首先,我们要理解锁的两种基本类型:共享锁(Shared Locks)和排他锁(Exclusive Locks)。共享锁允许一个事务读取一行数据,但不允许其他事务修改它。多个事务可以同时持有共享锁,实现读取数据的并发。而排他锁则...

    数据库,各种锁的概述

    - **共享意向排他锁(SIX)**:同时持有表上的共享锁和意向排他锁。 - **应用场景**:用于实现对表级数据的加锁,从而控制对整个表的操作权限。 4. **架构稳定性锁(Sch-M/Sch-S)** - **定义**:主要用于数据库...

    oracle数据库中的锁机制

    它主要分为两大类:共享锁(Share Locks)和排他锁(Exclusive Locks)。共享锁允许多个用户读取数据,但不允许任何用户修改数据;而排他锁则阻止其他用户读取或修改数据,仅允许持有锁的用户进行修改操作。 #### ...

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

    共享行排他锁是一种介于行级共享锁和行级排他锁之间的锁,它允许其他事务添加行级共享锁,但不允许添加行级排他锁。拥有 SRX 锁的事务可以执行更新操作,但其他事务只能进行 `SELECT` 查询。加锁语句为 `Lock Table ...

    MySQL8.0锁机制和事务

    MySQL 8.0 中的锁机制可以分为共享锁和排他锁两大类。共享锁(S)允许拥有共享锁的事务读取该行数据,而排他锁(X)允许拥有排他锁的事务修改或删除该行数据。此外,InnoDB 存储引擎还支持意图锁,意图锁是表级锁,...

    数据库锁学习文档

    首先,数据库锁分为两大类:排他锁(X)和共享锁(S)。排他锁允许持有者对锁定资源进行读写操作,但不允许其他用户进行任何操作。共享锁则允许多个用户同时读取同一资源,但不允许写操作。在Oracle数据库中,锁...

    7 数据库锁和表分区.ppt

    数据库锁主要分为两种类型:共享锁(Shared Locks)和排他锁(Exclusive Locks)。 1. **共享锁**:又称为读锁,允许一个或多个事务读取某一行数据,但不允许其他事务进行写操作。当一个事务获取了共享锁后,其他...

    数据库安全事务与锁数据库安全事务与锁

    在SQL Server 2000中,事务和锁机制对于保证数据库系统的并发操作和数据安全性至关重要。 1. **事务**: 事务是数据库操作的基本单元,它包含一组数据库操作,这些操作要么全部成功(提交),要么全部失败(回滚)...

    oracle数据库锁使用

    总之,Oracle数据库锁的使用是数据库管理中的重要一环,理解并合理运用这些锁可以帮助我们优化并发性能,防止数据冲突,并确保数据的正确性和一致性。在设计事务和处理并发操作时,应根据业务需求选择合适的锁类型,...

    数据库中的锁机制.pdf

    1. **NOLOCK**:此提示表明查询不会对数据表添加共享锁,允许事务读取未提交的数据,即“脏读”。使用NOLOCK的查询不会阻塞其他事务对数据的修改,可能导致读取到不准确的数据。例如,在示例中,如果一个事务在未...

    Oracle数据库的锁类型

    Oracle数据库中,TM锁包括SS、SX、S、X等模式,每种模式代表了不同的锁强度和用途。例如: - **SS**:行级共享锁,允许其他事务读取数据行,但不能修改。 - **SX**:行级排他锁,禁止其他事务对数据行进行任何操作...

    oracle 检测数据库是否有对象被锁的脚本

    Oracle提供了多种类型的锁,包括排他锁(X)、共享锁(S)、意向锁(IX和IS)等,以支持不同级别的并发操作。 `ckobject_lock.sql`脚本是一个用于检查数据库中锁定对象的实用工具。第一次运行时,该脚本会收集当前...

    oracle数据库中锁、序列、索引管理.docx

    表级锁有共享锁(RS、RX)和排他锁(S、SRX、X),共享锁允许读取,而排他锁则禁止其他事务进行任何操作。数据库级锁可以锁定整个数据库,限制其为只读模式或限制模式,以进行维护或备份。 接下来,我们来看一下锁...

    数据库锁和索引实验

    在数据库中,主要存在两种类型的锁:共享锁(读锁)和排他锁(写锁)。共享锁允许多个事务读取同一数据,但不允许写入;而排他锁则阻止其他事务读取或写入被锁定的数据。实验中,通过并发启动两个会话并尝试更新同一...

    关于数据库的锁

    当一个事务获取了共享锁后,其他事务可以获取相同数据上的共享锁,但不能获取排他锁。 - **示例**: - T1: `SELECT * FROM table;` - T2: `SELECT * FROM table;` 在这个例子中,如果T1已经执行了`SELECT * FROM...

Global site tag (gtag.js) - Google Analytics