Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念)

什么是事务?

如果一个包含多个步骤的业务操作,这些操作被事务管理,那么这些操作要么同时成功要么同时失败

事务的四大特性(必须记住):

持久性:当事务回滚或者提交之后,数据库会持久化数据

一致性:事务操作前后,数据的总量不变

原子性:是不可分割的最小单位,不可分割,要么同时成功要么同时失败,不可分割

隔离性:各个事务之间相互独立

事务的基本操作:

开启事务:start transaction

回滚事务:Roolback

提交:commit;

事务提交的两种方式:

自动提交:

mysql中事务是默认自动提交的

比如我们执行一条DML(Data Manipulation Language),他会自动提交数据,将数据持久化到数据库中

手动提交:

Oracle数据库默认是手动提交的,

需要开启事务再手动提交

查看事务提交的方式:

可以看到mysql的默认提交方式是自动提交,-- 1 代表自动提交 0 代表手动提交

修改事务的提交方式:

set @@autocommit

可以看到事务的提交方式被修改为手动提交

事务的隔离等级:

1

Read uncommitted:读未提交

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

2

Read commited:读已提交

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

3

Repeatable read 可重复读(Mysql默认读法):

产生的问题:幻读

4

serialzable:串行化

可以解决所有问题

事务的隔离等级越高,安全等级也越高,但是效率越来越低

数据库查询隔离级别:

select @@tx_isolation

设置数据库的隔离等级:

select global transaction isolation level

什么是幻读,脏读,不可重复读

不可重复读:

不可重复读是指A事务读取了B事务已经提交的更改数据。假如A在取款事务的过程中,B往该账户转账100,A两次读取的余额发生不一致。

脏读:

A事务读取B事务尚未提交的更改数据,并在这个数据的基础上进行操作,这时候如果事务B回滚,那么A事务读到的数据是不被承认的。例如常见的取款事务和转账事务:



幻读:

A事务读取B事务提交的新增数据,会引发幻读问题。幻读一般发生在计算统计数据的事务中,例如银行系统在同一个事务中两次统计存款账户的总金额,在两次统计中,刚好新增了一个存款账户,存入了100,这时候两次统计的总金额不一致。



以上就是java事务的一些基础知识,如有错误还请各位批评指正,喜欢我的文章可以关注或者收藏

Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念)的更多相关文章

  1. java面试题之----数据库事务的四大特性及隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...

  2. Java数据库事务四大特性以及隔离级别

    四大特性ACID 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.失败回滚的操作事务,将不能对数据库有任何影响 一致性(Consistency) 一致性是指事 ...

  3. Spring事务解析4-切面织入

    BeanFactoryTransactionAttributeSourceAdvisor作为Advisor的实现类,自然要遵从Advisor的处理方式,当代理被调用时会调用这个类的增强方法,也就是此b ...

  4. Spring事务解析3-增强方法的获取

    从InfrastructureAdvisorAutoProxyCreator的层次结构中可以看到,InfrastructureAdvisorAutoProxyCreator间接实现了SmartInst ...

  5. Spring事务传播机制和数据库隔离级别

    Spring事务传播机制和数据库隔离级别 转载 2010年06月26日 10:52:00 标签: spring / 数据库 / exception / token / transactions / s ...

  6. 数据库事务的四大特性以及事务的隔离级别(mysql)

      本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...

  7. 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别

    数据库事务的四大特性以及事务的隔离级别   本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...

  8. spring事务解析

    1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是 ...

  9. 数据库事务的四大特性以及4种事务的隔离级别-以及对应的5种JDBC事务隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...

随机推荐

  1. bug和测试报告思维导图

    Bug定义: 1.不符合需求的 2.程序本身的报错 3.不符合用户使用习惯的 Bug生命周期: 当我们测试人员提交一个bug的时候,自始bug就有它的生命周期,从开始到结束, 把测试的过程和结果写成文 ...

  2. 最短路之Floyd

    #include<bits/stdc++.h>using namespace std;const int maxn = 300+10;int n,m,f[maxn][maxn],t; in ...

  3. JDK8--03:lambda表达式语法

    对于lambda表达式的基础语法,一个是要了解lambda表达式的基础语法,另外一个是需要了解函数式接口 一.lambda表达式基础语法描述 java8中引入了新的操作符  ->  ,可以称为l ...

  4. Riccati方程迭代法求解

    根据上述迭代法求解P,P为Riccati方程的解,然而用LQR需要计算K,再将K算出. (迭代过程中 ,我们可以将此算法和dlqr函数求解的参数进行对比,当误差小于我们设置的允许误差我们就可以把此算法 ...

  5. python R语言 入门常见指令

    环境是windows R语言安装包 install.packages("magrittr")

  6. 使用onload和setTimeout、setInterval来实现当前的时间

    1.在body里面使用onload和在函数中使用setTimeout来实现当前的日期时间不断变化 2.在script中直接是用setInterval实现当前实现的日期时间不断变化 <!DOCTY ...

  7. Linux 文件类型 ,文件权限

     第一个字符段:文件类型.第二个组字符段又分为三段(每三个字符为一段不足用‘-’):文件属性. . drwxrwxrwx . -rwxr-xr-x 第一字符段: 第二字符组段依次为: - :普通文件  ...

  8. linux磁盘容量不足的处理方案

    在虚机上安装memcached时,突然发现磁盘空间不足. df -h 发现,磁盘一共12G,原来是新申请的虚机,磁盘分区没有挂载上. fdisk -l 查看磁盘,发现有 /dev/vdb1 /dev/ ...

  9. 每日一题 - 剑指 Offer 52. 两个链表的第一个公共节点

    题目信息 时间: 2019-07-03 题目链接:Leetcode tag: 单链表 难易程度:简单 题目描述: 输入两个链表,找出它们的第一个公共节点. 示例: A: a1 -> a2 \ - ...

  10. expected single matching bean but found 2: menusServiceImpl,IMenusService

    问题如下: 接口也作为匹配的bean? 有点迷惑了....... 经过在网上找资料,发现和@MapperScan这个注解有关系,具体源码不止.但是这个注解会扫描路径下的所有类. 去掉这个注解就可以正常 ...