开两个cmd窗口,相当于两个事务。


read-uncommitted这种级别是解决不了任何问题的,它什么情况都能出现。刚才演示了脏读,再演示就出现了不可重复读。


read-committed隔离级别能解决脏读问题。

read-committed是解决了脏读的问题,但是还是出现了不可重复读的问题。

可能有的人会认为这没有问题,A事务提交commit之后我B事务读到没问题啊,这是正确的。这种情况在开发里面有时候是没有问题的有时候是有问题的。如果我现在要做报表,现在查询的数据要做成报表导出来,导成文件,例如说我做的是一个交通管理系统,我要统计这个月发生了多少起车祸,那就有问题了,第一次查八起车祸,第二次查十八起车祸,两次读取的结果不一样,因为你读取了别人提交的数据。问题是这个报表以哪个为准,第一次八起,第二次十八起,没准你第三次查又变了。不确定哪个数据为准。开发里面有时候会影响,因为你不知道用哪个数据。但是有些情况是我只是想看一下我也不想导成报表之类的,只是看一下那就无所谓了。但是有些情况就必须要求第一次和第二次查是一致的。所以不可重复读在某些情况是必须考虑的。


oralce的事务隔离级别是read-committed。不是说不可重复读是很严重的错误,至少人家oracle是允许这样的操作的,但是在某些情况下是不允许的。

不可重复读就是一个事务读取了另外一个事务提交的数据。如果现在我的数据库的事务隔离级别是Repeatable read,那么在我的事务过程中,当A事务提交了数据,B事务这边也是不更新的,保证了我每次查询都是一样的。那么在这样的数据库隔离级别下,B事务怎么能读取A事务提交的数据呢?很简单,B事务commit之后再开启事务再读取就可以了。那么这种操作就能够保证在我的这个事务过程我的数据是OK的。但是Repeatable read是不能够实时更新数据。但是这种方案在开发中有的情况下是用的到的,就好像刚才说的做报表每次查询都不一样那不就废了吗?应该每次查都一样才能做报表。


虚读和幻读演示也是麻烦的事情,因为它是强调insert。这次读和上次读的条数不一样。它是在一定概率下会出现的。


如果事务隔离级别为串行化(Serializable)它会锁表。意思是我的事务操作过程中谁也玩不了,得等到我玩完了你再玩。只有A事务commit之后B事务才能查到。但是这种操作性能很垃圾。但是那种数据要求非常严格必须得准确你就得用这种数据库事务隔离级别。

你连表操作的功能权限都没有,但是性能相当垃圾。

day18-事务与连接池 6.事务隔离级别与解决问题的更多相关文章

  1. 十三、事务、连接池 、ThreadLocal 、BaseServlet自定义Servlet父类 、 DBUtils à commons-dbutils

    l 事务 l 连接池 l ThreadLocal l BaseServlet自定义Servlet父类(只要求会用,不要求会写) l DBUtils à commons-dbutils 事务 l 事务的 ...

  2. 03 事务,连接池DBCP,C3P0,DBUtils

    事务 Transaction  其实指的一组操作,里面包含许多个单一的逻辑.只要有一个逻辑没有执行成功,那么都算失败. 所有的数据都回归到最初的状态(回滚) 事务的作用:为了确保逻辑的成功. 例子: ...

  3. 一、DAO设计模式 二、DAO设计模式的优化 三、JDBC中的事务,连接池的使用

    一.DAO设计模式概述###<1>概念 DAO,Data Access Object ,用于访问数据库的对象. 位于业务逻辑和数据持久化层之间,实现对数据持久化层的访问![](1.png) ...

  4. MyBatis基础_连接池与事务、动态SQL、注解开发

    一.MyBatis连接池及事务控制 1.连接池 在实际开发中,都会使用连接池,因为它可以减少获取连接缩消耗的时间.所谓连接池,就是存储数据库连接的容器.连接池中存储一定数量的数据库连接,当线程需要使用 ...

  5. 【MyBatis】MyBatis 连接池和事务控制

    MyBatis 连接池和事务控制 文章源码 MyBaits 连接池 实际开发中都会使用连接池,因为它可以减少获取连接所消耗的时间.具体可查看 MyBatis 数据源配置在 SqlMapConfig.x ...

  6. Spring Boot1.5.4 连接池 和 事务

    原文:https://github.com/x113773/testall/issues/10 默认连接池---spring Boot中默认支持的连接池有Tomcat.HikariCP .DBCP . ...

  7. 一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 31.线程池复用的原理 32.spring是什么? 33.对Aop的理解 34.对IOC的理解 35.BeanFactor ...

  8. 事务的ACID和四个隔离级别

    在实际的业务场景中,并发读写引出了和事务控制的需求.优秀的事务处理能力是关系型数据库(特别是oracle等商用RDBMS)相对于正当风口的NoSQL数据库的一大亮点.但这也从另一方面说明了事务控制的复 ...

  9. Java实战之04JavaWeb-05事务和连接池

    一.事务部分 1.事务的简介 做一件事情,这个一件事情中有多个组成单元,这个多个组成单元要不同时成功,要不同时失败.A账户转给B账户钱,将A账户转出钱的操作与B账户转入钱的操作绑定到一个事务中,要不这 ...

随机推荐

  1. jQuery设计理念

    jQuery设计理念 引用百科的介绍: jQuery是继prototype之后又一个优秀的Javascript框架.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1. ...

  2. DevOps means no Ops!

    DevOps means no Ops! 只单纯地搞网络的话或许你可以搞得非常好,并且获得不错的薪资,不过,5年后~10年后~,那时候随便一个人经过简单的学习就能通过Web界面或者专用的工具就能搞定一 ...

  3. ubuntu 16.04 jenkins pipline的实现 最终docker启动服务

    准备工作:两台虚拟机A:192.168.1.60 B:192.168.1.61 C:一个存放代码的代码库(github)A:jenkins git docker openssh-server(ssh) ...

  4. MD5加密“破解”在.NET平台实现最基本的理解

    MD5作为一种散列算法,广泛用于密码传输过程中的“加密”(引号的意思是这并不是真正的加密,而是形成密码的散列值)过程.MD顾名思义Message Digest(报文摘要),可以将输入的密码,一般来说为 ...

  5. Data Structure Array: Maximum circular subarray sum

    http://www.geeksforgeeks.org/maximum-contiguous-circular-sum/ #include <iostream> #include < ...

  6. 简单做出HTML5翻页效果文字特效

    之前在网上看到一款比较有新意的HTML5文字特效,文字效果是当鼠标滑过是出现翻开折叠的效果,类似书本翻页.于是我兴致勃勃的点开源码看了一下,发现其实实现也挺简单的,主要利用了CSS3的transfor ...

  7. ll指令输出解析

    从左到右: 文件属性 共有10-11位,分别表示: 1.表示目标属性,d目录,l连结文件,-文件 2-4,owner权限,顺序为: r可读.w可写.x可执行,例如: rwx可读写执行,rw-可读写不能 ...

  8. cat echo 打印菜单

    cat << END        =============================        1.apple        2.pear        3.banana   ...

  9. java入门了解11

    1.码表 (一)码表种类 ASCII:美国标准信息交换码,用一个字节的7位可以表示 ISO8859-1:拉丁码表.欧洲码表,用一个字节的8位表示,对ASCII没用到空间补充了自己特有的 GB2312: ...

  10. App开发流程之iOS开发证书拾遗

    很久没有总结,回头看了一下过期的账号,记录的内容少之又少.最近有一些时间,想好好总结记录一下. 由于很久没有记录,想写的东西很多又很杂,想了一下,一篇一篇罗列知识点和经验,还不如写一个系列,记录一个应 ...