zoukankan      html  css  js  c++  java
  • 数据库事务的四种隔离模式

    四种隔离模式主要是用来解决不同线程的事务造成的几种问题:

    1.修改丢失:两个事务A,B对同一数据同时进行读取与修改,出现事务B 覆盖事务A的提交结果

    2.脏读:事务A读到事务B修改却未提交的数据,事务B回滚数据修改操作,导致了事务A获得数据是脏数据(也可以理解为事务A获取的数据与数据库中存储的数据是不一致的)

    3.(不可重复读)虚读:事务A先读取某一行数据,事务B对改行数据进行修改,事务B再一次读取该行数据时就会造成前后两次读取结果不一致。

    4.幻读:事务A读取某段数据,事务B对其进行插入或者删除操作时,当事务A重新读取该段数据时会造成前后两次查询的数据不一致,出现第一次比第二次多或者少的现象。

    为了解决上面的问题,出现了四种事务隔离模式

    1.Read uncommitted(未授权读取、读未提交):(排他写锁)同一时间只允许一个事务进行写操作的存在,可以允许多个事务进行读取。可以解决(修改丢失)的问题,但是会出现脏读,虚读,幻读这些问题

    2.Read committed(授权读取、读提交):(排他写锁、瞬间共享读锁)同一时间只允许一个事务进行写操作禁止其他事务进行读与写,可以解决(修改丢失,脏读)不能解决虚读,幻读

    3.Repeatable read(可重复读取):(排他写锁、共享读锁)同一时间只允许一个事务进行写操作禁止其他事务进行读与写,同一时间一个事务读取的时不允许其他事务进行写(可以读取)。可以解决(修改丢失,脏读,虚读),但不能解决幻读。

    4.序列化:事务只能一个一个按照序列来进行读写,这样并发性性能不高,可以解决上面4个问题。

    大多数数据库的默认级别就是Read committed,比如Sql Server , Oracle。
    Mysql的默认隔离级别就是Repeatable read。
    Oracle支持2种事务隔离级别:READ COMMITED,SERIALIZABLE.
    Mysql支持4种事务隔离级别。

  • 相关阅读:
    第1天|12天搞定Python网络爬虫,吃里爬外?
    第12天 | 12天搞定Python,让excel飞起来
    第11天 | 12天搞定Python,数据库操作
    第10天 | 12天搞定Python,文件操作(超详细)
    第4天 | 12天搞定Python,基础语法(下)
    第3天 | 12天搞定Python,用Eclipse编写代码
    第3天 | 12天搞定Python,用VSCode编写代码
    第3天 | 12天搞定Python,用PyCharm编写代码
    第2天 | 12天搞定Python,运行环境(超详细步骤)
    第1天 | 12天搞定Python,告诉你有什么用?
  • 原文地址:https://www.cnblogs.com/ynwxownd/p/11587475.html
Copyright © 2011-2022 走看看