• 事务隔离级别


    未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据)

    已提交读(数据库引擎的默认级别)

    可重复读

    可序列化(隔离事务的最高级别,事务之间完全隔离)

    1.读未提交(Read Uncommitted):这种隔离级别可以让当前事务读取到其它事物还没有提交的数据。这种读取应该是在回滚段中完成的。通过上面的分析,这种隔离级别是最低的,会导致引发脏读,不可重复读,和幻读。
    2.读已提交(Read Committed):这种隔离级别可以让当前事务读取到其它事物已经提交的数据。通过上面的分析,这种隔离级别会导致引发不可重复读,和幻读。
    3.可重复读取(Repeatable Read):这种隔离级别可以保证在一个事物中多次读取特定记录的时候都是一样的。通过上面的分析,这种隔离级别会导致引发幻读。
    4.串行(Serializable):这种隔离级别将事物放在一个队列中,每个事物开始之后,别的事物被挂起。同一个时间点只能有一个事物能操作数据库对象。这种隔离级别对于数据的完整性是最高的,但是同时大大降低了系统的可并发性。

    数据库会话的设置:

    1:脏读

         情景:A事物读取B事物修改了但是未提交的数据

         问题:若B回滚了事物,A就读到了错误数据。

    2:不可重复读

        情景:A事物查询数据,B修改了数据,A又查询数据

        问题:A事物前后两次数据不一样

    3:幻读

        情景:A事物查询数据,B事物插入数据,A又查询数据

        问题:A事物感觉出现了幻觉,多了些数据

    可串行化比较严谨,级别高;

    MySQL

    mysql默认的事务处理级别是'REPEATABLE-READ',也就是可重复读

    1.查看当前会话隔离级别

    select @@tx_isolation;

    2.查看系统当前隔离级别

    select @@global.tx_isolation;

    3.设置当前会话隔离级别

    set session transaction isolatin level repeatable read;

    4.设置系统当前隔离级别

    set global transaction isolation level repeatable read;

    Oracle

    oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。

    默认系统事务隔离级别是READ COMMITTED,也就是读已提交

    1.查看系统默认事务隔离级别,也是当前会话隔离级别

    --首先创建一个事务
    declare
         trans_id Varchar2(100);
      begin
         trans_id := dbms_transaction.local_transaction_id( TRUE );
      end; 

    --查看事务隔离级别

    SELECT s.sid, s.serial#,

      CASE BITAND(t.flag, POWER(2, 28))
        WHEN 0 THEN 'READ COMMITTED'
        ELSE 'SERIALIZABLE'
      END AS isolation_level
    FROM v$transaction t
    JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');

    SQL Server

    默认系统事务隔离级别是read committed,也就是读已提交

    1.查看系统当前隔离级别

    DBCC USEROPTIONS 

    isolation level 这一项的 Value 既是当前的隔离级别设置值

    2.设置系统当前隔离级别

    SET TRANSACTION ISOLATION LEVEL Read UnCommitted;

    其中Read UnCommitted为需要设置的值

  • 相关阅读:
    Windows下路由表分析
    VMware Workstation网络连接的三种模式
    VMware Workstation环境下的三种网络配置桥接,NAT和HOST-ONLY
    Binary Tree Right Side View
    Count Complete Tree Nodes
    Flatten Binary Tree to Linked List
    Valid Anagram
    SELINUX部分的权限规则问题鸟哥7.4&&7.5?????
    网络五层架构及各层使用的协议
    Linux的echo -n -e 两个参数的含义
  • 原文地址:https://www.cnblogs.com/ScvQ/p/7008496.html
Copyright © 2020-2023  润新知