`
fengjianchao_vip
  • 浏览: 42993 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

事务中的加锁顺序问题

 
阅读更多

事务中分有4中级别的
下面直接引联机帮助
SET TRANSACTION ISOLATION LEVEL
    { READ COMMITTED
        | READ UNCOMMITTED
        | REPEATABLE READ
        | SERIALIZABLE 
    }

参数
READ COMMITTED

指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。

READ UNCOMMITTED

执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。

REPEATABLE READ

锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。

SERIALIZABLE

在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 HOLDLOCK 相同。

---------------------
这4中级别只有READ UNCOMMITTED是
可以做到无论排他锁还是共享锁都仅仅是在执行完sql语句后就释放锁,
READ COMMITTED针对排他锁而言必须要等事务完成后才能释放排他锁(排除锁转换)
后两种是无论是共享还是排他锁都一直持有,知道事务结束。

因此就并发性来说READ UNCOMMITTED是最好的,但他能造成很严重的脏读,因此微软
的默认的事务级别为READ COMMITTED

分享到:
评论

相关推荐

    通过数据库给文件加锁

    本篇文章将深入探讨“通过数据库给文件加锁”的概念、原理以及实践方法。 文件锁定通常在多用户环境中至关重要,例如在文件共享系统、协同编辑软件或任何需要同时处理相同资源的应用程序中。数据库系统提供的锁机制...

    阿里大牛何sir 深入MySQL加锁处理分析

    解决死锁问题往往需要分析事务执行的顺序、涉及的表和索引以及加锁的顺序。 总结来说,深入理解MySQL/InnoDB的加锁机制对于提高数据库性能、避免并发问题以及分析线上问题非常重要。通过掌握不同SQL语句在不同条件...

    两阶段加锁

    在数据库系统原理中,两阶段加锁是一个重要的理论基础,也是实现事务隔离级别的关键机制之一。 一、两阶段加锁的概述 两阶段加锁机制分为两个阶段:锁定阶段(Locking Phase)和解锁阶段(Unlocking Phase)。在...

    mysql加锁分析

    2. **当前读(Current Read)**:这类读操作读取的是记录的最新版本,并且会为读取到的数据加锁,以确保在读取过程中数据不会被其他事务更改。当前读通常发生在特殊的读操作、插入、更新或删除操作中。例如: ```...

    58 多个事务更新同一行数据时,是如何加锁避免脏写的?l.pdf

    在多个事务更新同一行数据的场景中,数据库首先检查该行数据是否已被其他事务加锁。如果发现没有加锁,当前事务就可以创建一个锁,并将锁与该行数据关联起来。一旦这行数据被加锁,其他事务如果试图访问或更新这行...

    mysql加锁分析_v1

    1. **死锁场景分析**:通过查看MySQL提供的死锁日志,分析死锁发生的原因,比如加锁顺序不当导致的循环等待。 2. **性能瓶颈排查**:监控SQL语句执行时的锁等待情况,识别频繁发生锁等待的热点SQL,并进行优化。 ##...

    4.5 mysql 加锁分析.pdf

    4. **串行化(Serializable)**:最高级别的隔离,保证了事务的顺序执行,但可能导致更多的锁竞争。 不同的隔离级别对数据的一致性和并发性能有着不同的影响。选择合适的隔离级别是平衡一致性与并发性能的关键。 #...

    CEDAR 测试案例1

    通过这些测试案例,我们可以了解到在MySQL等支持事务的数据库系统中,表锁是如何保证并发操作的顺序和一致性。在多用户环境中,当一个事务对表进行操作时,其他事务可能需要等待,以防止数据不一致。这些测试确保了...

    事务并发的可能问题与其解决方案.docx

    更新锁(U-locks)是某些数据库系统中的特殊锁类型,用于解决在加锁转换过程中可能引发的死锁问题。此外,还有临时锁和持续锁的概念,临时锁仅在当前语句执行期间有效,而持续锁则在整个事务期间保持。 除了锁机制...

    确定性分布式数据库中长事务处理方法研究.pdf

    具体而言,通过对长事务中的每个操作以及子事务的顺序关系进行分析,将读写依赖和写写依赖纳入考量,从而避免或减少冲突的发生。 事务访问文件则是一种特殊的文件记录方式,用以整理历史事务更新的数据。它能够有效...

    [数据库原理]事务分析(自用笔记)

    - **顺序加锁**:为数据项设定一个加锁顺序,所有事务按照这个顺序加锁。 - **等待图法**:构建事务等待图,一旦发现环路,则回滚某个事务以解除死锁。 ### 事务调度 #### 5. 串行化调度 - **定义**:将事务按...

    Mycat事务补偿设计文档

    2. **事务的隔离**:在事务执行过程中,需要有效地隔离事务相关的数据,以免出现数据冲突等问题。这通常需要根据具体的业务场景对相关数据进行锁定处理。 3. **混合事务处理**:在Mycat中,主子表之间可以配置刚性...

    mysql事务共2页.pdf.zip

    - **串行化(Serializable)**:最严格的隔离级别,通过加锁确保事务顺序执行,防止所有并发问题,但性能最低。 3. **事务的开始与结束** 在MySQL中,可以使用`START TRANSACTION`或`BEGIN`开始一个事务,然后...

    记一次排查线上MySQL死锁过程,不能只会curd,还要知道加锁原理.doc

    标题和描述中提到的事件是一次在线MySQL数据库发生的死锁问题,这突显了了解数据库加锁原理的重要性,而不仅仅是基础的CRUD操作。死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无...

    Lec17-时间戳顺序并发控制1

    总之,时间戳顺序并发控制提供了一种无锁的并发控制机制,避免了死锁,但在实际应用中需要权衡其可能导致的事务中止和恢复问题。在设计数据库系统时,需要综合考虑并发控制策略的效率、可恢复性和并发度,以达到最佳...

    mysql insert 加锁流程1

    MySQL中的插入操作(INSERT)涉及一系列的加锁机制,确保数据的一致性和并发安全性。在开始插入行之前,系统会设定一种特殊的间隙锁,称为插入意向间隙锁(Insert Intention Gap Lock)。这种锁的主要目的是避免在同...

    【课堂笔记】MySQL事务与锁详解.pdf

    - 在事务中合理安排操作的顺序,避免死锁。 - 事务回滚机制的实现。 通过以上知识点的学习,可以帮助理解MySQL中事务和锁的工作原理,以及如何在实际项目中合理配置和使用事务,确保数据库操作的正确性和效率。

    数据库基础数据库事务处理.pptx

    锁机制是指对数据库中的记录或数据项加锁,防止其他事务访问该记录或数据项。时间戳机制是指对事务的执行顺序进行标记,防止事务之间的相互影响。乐观并发控制机制是指对事务的执行过程进行监视,防止事务之间的相互...

    15原理 5:同舟共济 —— 事务(1).md

    当执行exec命令时,Redis会顺序执行事务队列中的所有命令,并一次性返回所有命令的结果。Redis的单线程特性保证了事务命令的顺序执行。 尽管Redis的事务不保证原子性,但它确实提供了隔离性,并且其简单性使得用户...

    数据库工程师 第9章 事务调度与并发控制.doc

    隔离性则是指在并发环境下,事务的执行效果等同于串行执行,避免脏读、不可重复读和幻读等问题。持久性意味着事务一旦提交,其结果就会永久保存,即使发生系统故障也能恢复。 事务调度分为串行调度和并发调度。串行...

Global site tag (gtag.js) - Google Analytics