zoukankan      html  css  js  c++  java
  • 并发控制

    事务是并发控制的基本单位,为了保证事务的隔离性和一致性,需要对并发操作进行正确的调度。

    1、并发操作带来的不一致问题:

    (1)丢失修改:

    两个事务读取同一个数据,并对该数据进行修改,T1提交的数据破坏了T2提交的数据,即后提交的数据覆盖了先提交的数据,导致先提交的数据结果被覆盖了。

    (2)不可重复读:

    事务T1读取到某一数据后,事务T2对该数据进行了修改,当T1再次读取该数据的时候发现数据已经改变。

    (3)读脏数据:

    事务T1读取到某一数据并对其修改,T2读取到了修改后的数据,但是由于某种原因,T1被撤销,T2读取到的数据与T1的实际值存在不一致。

    即:事务T2读取到了T1尚未提交的数据。

    2、数据库的封锁:

    封锁是实现并发控制的重要技术。

    read uncommitted : 读取尚未提交的数据 

    read committed:读取已经提交的数据 ,可以解决脏读 ,oracle默认的级别。

    repeatable read:重读读取,可以解决脏读 和 不可重复读 ,mysql默认的级别。

    serializable:串行化,可以解决 脏读 不可重复读 和 丢失修改,相当于锁表,会使得数据库的效率极低。

    (1)查询mysql数据库的隔离级别:

    SELECT @@tx_isolation

     即:mysql数据库的默认封锁级别是:repeatable read

    (2)mysql数据库的隔离级别的修改:

    SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

     即:在mysql数据库中不会出现脏读 和 不可重复读的现象。

  • 相关阅读:
    高级软件工程第一次作业
    《高级软件工程》团队第二次作业
    《高级软件工程》结对第二次作业
    《高级软件工程》团队第一次作业
    《高级软件工程》结对第一次作业
    《高级软件工程》第二次作业
    《高级软件工程》第一次作业
    冲刺NO.1
    冲刺No.4
    冲刺No.3
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11710082.html
Copyright © 2011-2022 走看看