首页 > 其他分享 >532事务的四大特征和533事务隔离级别介绍

532事务的四大特征和533事务隔离级别介绍

时间:2022-10-13 14:58:46浏览次数:47  
标签:事务 隔离 幻读 数据 READ 533 532 级别

事务的四大特征

最为基础的四大特征分别为

  • 原子性:是不可分割的最小单位,要么同时成功,要么同时失败
    •  一个原子事务要么完整执行,要么干脆不执行。这意味着,工作单元中的每项任务都必须正确执行。
    • 如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。
    • 如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。
  • 持久性:当事务提前或回滚后,数据库持久化保存的数据
    • 一致性代表了底层数据存储的完整性。它必须由事务系统和应用开发人员共同来保证。事务系统通过保证事务的原子性,隔离性和持久性来满足这一要求;
    • 应用开发人员则需要保证数据库有适当的约束(主键,引用完整性等),并且工作单元中所实现的业务逻辑不会导致数据的不一致
    • (即,数据预期所表达的现实业务情况不相一致)。例如,在一次转账过程中,从某一账户中扣除的金额必须与另一账户中存入的金额相等。
  • 隔离性:多个事务之间,相互独立
    • 隔离性意味着事务必须在不干扰其他进程或事务的前提下独立执行。换言之,在事务或工作单元执行完毕之前,其所访问的数据不能受系统其他部分的影响。
  • 一致性:事务操作前后。数据不变
    • 持久性表示在某个事务的执行过程中,对数据所作的所有改动都必须在事务成功结束前保存至某种物理存储设备。这样可以保证,所作的修改在任何系统瘫痪时不至于丢失。

事务的隔离级别(了解)

  • 概述:多个事务之间隔离的,相互独立的。但是多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这血问题
  • 事务隔离级别有4种,但是像Spring会提供给用户5种,来看一下:

 

  • 1、DEFAULT

使用"select @@tx_isolation"来查看默认的事务隔离级别

     默认隔离级别,每种数据库支持的事务隔离级别不一样,如果Spring配置事务时将isolation设置为这个值的话,那么将使用底层数据库的默认事务隔离级别。顺便说一句,如果使用的MySQL,可以使用"select @@tx_isolation"来查看默认的事务隔离级别

     SET GLOBAL TRANSACTION INSLATION  LEVEL 级别字符串;

      SET GLOBAL TRANSACTION INSLATION  LEVEL REPEATABLE_READ

  •   2、READ_UNCOMMITTED

     读未提交,即能够读取到没有被提交的数据,所以很明显这个级别的隔离机制无法解决脏读、不可重复读、幻读中的任何一种,因此很少使用

      会产生的问题:脏读,不可重复读,幻读。

  • 3、READ_COMMITED(Orcale)

    读已提交,即能够读到那些已经提交的数据,自然能够防止脏读,但是无法限制不可重复读和幻读

    会产生的问题:不可重复读,幻读

 

  • 4、REPEATABLE_READ(mysql默认)

   重复读取,即在数据读出来之后加锁,类似"select * from XXX for update",明确数据读取出来就是为了更新用的,所以要加一把锁,防止别人修改它。REPEATABLE_READ的意思也类似,读取了一条数据,这个事务不结束,别的事务就不可以改这条记录,这样就解决了脏读、   不可重复读的问题,但是幻读的问题还是无法解决

    会产生的问题:幻读

  5、SERLALIZABLE

  串行化,最高的事务隔离级别,不管多少事务,挨个运行完一个事务的所有子事务之后才可以执行另外一个事务里面的所有子事务,这样就解决了脏读、不可重复读和幻读的问题了

  网上专门有图用表格的形式列出了事务隔离级别解决的并发问题:

 

    可与解决所有的问题

    注:隔离级别从小到大安全性越来越高,但是效率越来越差

标签:事务,隔离,幻读,数据,READ,533,532,级别
From: https://www.cnblogs.com/agzq/p/16788125.html

相关文章

  • 事务四大特征和事务隔离级别介绍
    事务四大特征:1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败 2.持久性:当事务提交或回滚后,数据库会持久化的保存数据 3.隔离性:多个事务之间。......
  • 事务基本演示和事务默认自动提交&手动提交
    1.事务的基本介绍 1.概念: *如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败2.操作: 1.开启事务:startt......
  • 事务-默认自动提交&手动提交和事务-事务四大特征
    事务-默认自动提交&手动提交MySQL数据库中事务默认自动提交事务提交的两种方式:自动提交:mysql就是自动提交的一条DML(增删改)语句会自动提......
  • MySQL事务隔离级别
    事务隔离级别概述mysql中,innodb所提供的事务符合ACID的要求,而事务通过事务日志中的redolog和undolog满足了原子性、一致性、持久性,事务还会通过锁机制满足隔离性,在innodb......
  • 面试官:Java 多线程怎么做事务控制?一半人答不上来。。
    项目代码基于:MySql数据,开发框架为:SpringBoot、Mybatis开发语言为:Java8前言公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。于是......
  • 事务注解:@Transtation
    事务注解:@Transtation@Transactional注解可以作用于接口、接口方法、类以及类方法上当作用于类上时,该类的所有public方法将都具有该类型的事务属性当作用在方法......
  • Redis事务以及锁的简单介绍
    Redis“耐心之树,结黄金之果”目录Redis“耐心之树,结黄金之果”1、NoSQL1.1NoSQL的四大分类:1.2NoSQL应用场景:2、Redis2.1redis-benchmark性能测试2.2基础3、事务......
  • 事务-基本演示,默认自动提交和手动提交、事务的四大特征
    事务-基本演示CREATETABLEaccount(idintPRIMARYKEYauto_increment,nameVARCHAR(10),balanceDOUBLE);insertintoaccount(name,balance)VAL......
  • Mysql笔记-事务
    事务事务(Transaction)会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,要么所有修改都已经保存了,要么修改都不保存。事务是访问并更新数据库中各种数据项......
  • mysql事务处理用法与实例详解
    MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能2.InnoDB:支持ACID事务、行级锁、并发3.BerkeleyDB:支持事务  一......