hibernate5学习之理解数据库级并发
本文作者:苏生米沿
本文地址:http://blog.csdn.net/sushengmiyan/article/details/50551741
当我们谈起隔离的时候,我们总是假定两个物体直接要么隔离要么不隔离;但是实际上,两者直接没有那么明显的界限。
当我们说数据库的事务的时候,完全隔离需要花费高的代价。你不能阻止世界用多用户联机事务处理系统获取数据。
因此,有很多的隔离级别可以供我们选择。当然,其中有些选项,是隔离级别较弱的,但是能提升性能和系统的伸缩性。
事务隔离级别
1.
2.
3.
事务隔离性问题
首先,我们看一下几个消弱隔离性的几个可能会出现的场景,ANSI SQL标准定义了几个数据库系统允许的隔离性级别。
图11.1展示了更新丢失的问题:两个对一行数据的更新同时进行,第一个更新先完成,第二个发生了异常,此时回滚,那么第一个修改的就会连带回滚,数据丢失。这发生在没有锁的系统中,此时没有隔离并发事务。
图11.2展示了脏读的发生情况: 脏读取出现在一个事务读另一个事务修改但是还没有提交的数据的时候。这很危险,因为另一个事务进行的改变很可能会回滚,并且第一个事务可能会得到非法数据(and invalid data may be written by the first transaction);
图11.3展示了读不重复数据的情况:这时,事务两次读取数据,并且两次读取的数据是不一致的。例如,两次读取的时候,另一个事务对其进行了更新,导致两次读取数据不一致。
图11.4展示了后更新覆盖先更新的问题:读不重复的一个特殊情况就是后提交者获胜。假设两个并发的事务都读取数据,一个更新它并提交,另一个也更新并提交,那么最终是以第二个更新为准的,第一个更新就被覆盖了。这种情况对用户来说是很有迷惑性的,A用户在不被知晓的情况下,被B的数据覆盖掉了,B通过一个过时的信息做出了决定。
图11.5展示了幻读的情况:这是说,在一个事物两次查询的过程中,有另一个事务,对其数据进行了删除或者插入操作,两次读的就出现了不同的情况。
既然你知道了会发生的最坏的情况,我们将会定义隔离级别和看各种级别能解决哪些问题。
hibernate5学习之理解数据库级并发的更多相关文章
- 总结:如何使用redis缓存加索引处理数据库百万级并发
前言:事先说明:在实际应用中这种做法设计需要各位读者自己设计,本文只提供一种思想.准备工作:安装后本地数redis服务器,使用mysql数据库,事先插入1000万条数据,可以参考我之前的文章插入数据, ...
- 使用redis缓存加索引处理数据库百万级并发
使用redis缓存加索引处理数据库百万级并发 前言:事先说明:在实际应用中这种做法设计需要各位读者自己设计,本文只提供一种思想.准备工作:安装后本地数redis服务器,使用mysql数据库,事先插入1 ...
- spring学习笔记---数据库事务并发与锁详解
多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分 ...
- 多事务运行并发问题spring学习笔记——数据库事务并发与锁详解
多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分 ...
- C10K——千万级并发实现的秘密:内核不是解决方案,而是问题所在!(转)
既然我们已经解决了 C10K并发连接问题,应该如何提高水平支持千万级并发连接?你可能会说不可能.不,现在系统已经在用你可能不熟悉甚至激进的方式支持千万级别的并发连接. 要知道它是如何做到的,我们首先要 ...
- 【眼见为实】自己动手实践理解数据库REPEATABLE READ && Next-Key Lock
[REPEATABLE READ] 首先设置数据库隔离级别为可重复读(REPEATABLE READ): set global transaction isolation level REPEATAB ...
- MongoDB索引(一) --- 入门篇:学习使用MongoDB数据库索引
这个系列文章会分为两篇来写: 第一篇:入门篇,学习使用MongoDB数据库索引 第二篇:进阶篇,研究数据库索引原理--B/B+树的基本原理 1. 准备工作 在学习使用MongoDB数据库索引之前,有一 ...
- 深入理解数据库磁盘存储(Disk Storage)
数据库管理系统将数据存储在磁盘.磁带以及其他的裸设备上,虽然这些设备的访问速度相比内存慢很多,但其非易失性和大容量的特点使他们成为数据存储的不二之选. 本文主要讨论大型数据库产品的磁盘存储内部结构,这 ...
- SQL Server 学习博客分享列表(应用式学习 + 深入理解)
SQL Server 学习博客分享列表(应用式学习 + 深入理解) 转自:https://blog.csdn.net/tianjing0805/article/details/75047574 SQL ...
随机推荐
- JAVA如何实现深拷贝
protected 域(或方法)微妙的规则 protected 域(或方法)对本包内的所有类可见(当然包括子类),那么,子类可以获得访超类受保护域(或方法)的权利,但是,若子类和超类不在同一个包下,就 ...
- java.lang.Class类
第一次接触Class类是在学习 jdbc中.Class.forName()是Class类的一个静态方法,用于手动加载一个类,例如数据库驱动. 其实每一个java类都拥有或者说对应一个Class的实例对 ...
- java处理大文本方案
转载自:http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类, ...
- angularjs中使用 <input type="file">标签实现一次最多上传5张图片
前期准备: 1.angular.js 2.bootstrap.css 具体如何实现呢?请看下面代码哈哈哈. 在angular项目中,如果要给<input type="file" ...
- NC帮助文档网址
NC帮助文档: https://wenku.baidu.com/view/2d05a77c0b4e767f5acfceb6.html NC方法总结: ...
- volume 方式使用 Secret - 每天5分钟玩转 Docker 容器技术(157)
Pod 可以通过 Volume 或者环境变量的方式使用 Secret,今天先学习 Volume 方式. Pod 的配置文件如下所示: ① 定义 volume foo,来源为 secret mysecr ...
- 【java】doc转pdf
市场上主流的 WORD 转 PDF 工具有两个:OpenOffice 和 Microsoft Office 转换插件,可以通过部署这两个工具实现 WORD 转 PDF 功能. 1: Microsoft ...
- [HNOI 2014]世界树
Description 题库链接 给出一棵 \(n\) 个节点的树, \(q\) 次询问,每次给出 \(k\) 个关键点.树上所有的点会被最靠近的关键点管辖,若距离相等则选编号最小的那个.求每个关键点 ...
- 计蒜客NOIP模拟赛(3)D2T1 小区划分
一条街道的两侧各连续坐落着 N 座单元楼.现在要为这些单元楼划分居民校区. 规则如下: 每个小区只能由同一侧连续的若干座单元楼组成.且两侧都恰有 K 个小区(每个小区至少有一栋楼). 两侧的小区划分规 ...
- bzoj 2437: [Noi2011]兔兔与蛋蛋
Description Solution 考虑犯错误的条件:之前是处于必胜状态,该操作之后就变成了必败状态. 我们可以把这个过程看成两人对网格图进行黑白染色,变成了一个二分图模型,即当前位置向相邻不同 ...