zoukankan      html  css  js  c++  java
  • 数据库事务的本质

    事务的本质

    redo log - 重做日志,保存sql语句到一个指定的log文件,先到logbuffer,然后commit或一定条件满足后刷到磁盘/undo log - 回滚日志,将当前要修改的行内容复制到undobuffer,满足一定条件后刷到磁盘,保存在数据文件中

    修改一行数据:

    先用排他锁锁定该行,记录redolog,把改行修改前的值copy到undolog中,然后修改当前行的值,填写事物编号,并使回滚指针指向undolog中修改前的行

    事物隔离级别

    感觉这个例子比较通俗https://blog.csdn.net/qq_33290787/article/details/51924963, 基于事物的本质参考:https://blog.csdn.net/chen77716/article/details/6742128,可以增加如下理解

    名称   解释-t1 解释-t2
    READ UNCOMMITTED

    读取未提交内容,脏读

    读事物直接读取主记录,无论事物是否完成

    begin transaction

    update

    rollback

    select data
    READ COMMITTED

    读取提交内容

    读事物读取最新的undolog,确保可以去到最新的更新,但重复可能会读到不同的值

    begin transaction

    update

    commit

    begin transaction

    update

    commit

    select data

    select data

    REPEATABLE READ

    可重读

    读事物读取指定版本号的undolog,确保可以多次重复读取相同的值,但可能读不到最新增加的值,因为insert不会记录undolog

    begin transaction

    insert value into range

    commit

    begin transaction

    insert value into range

    commit

    select data where range

    select data where range

    SERIALIZABLE

    可串行化,为每个读数据建立共享锁

    锁表

      完全串行,未提交再操作等待

    查看oracle数据库隔离级别

    首先需要先在事物中,然后用如下sql查看事物隔离级别

    复制代码
    select sid,serial#,flag,
      CASE WHEN bitand(FLAG,268435456) = 0 THEN 'SERIALIZABLE'
                                           ELSE 'READ COMMITTED'
                                           END AS ISOLATIONLEVEL
      from V$transaction t,v$session s
      where t.addr=s.taddr
      AND   audsid = USERENV('SESSIONID');
    复制代码
           SID    SERIAL#   FLAG ISOLATIONLEVEL
    ---------- ------------- -------- --------------
        52        3            3587 SERIALIZABLE

    设置oracle数据库隔离级别

     SET TRANSACTION ISOLATION LEVEL***

  • 相关阅读:
    8、SpringBoot-CRUD默认访问的首页以及thyleaf的静态文件引入/WebMvcConfigurer / WebMvcConfigurationSupport
    7、springmvc的自动配置
    6、模板引擎
    5.对静态资源映射的规则
    文件的上传和下载
    python file operation
    python sys.argv[]
    python pydoc
    python compile
    python exec
  • 原文地址:https://www.cnblogs.com/it-worker365/p/8759193.html
Copyright © 2011-2022 走看看