数据库操作事物的四大特性以及MySQL数据库的四种隔离级别
1 、事物操作数据库的四大特性(ACID)
1.原子性 (Atomicity)
原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚。
2.一致性 (Consistency)
一致性:简单来说就是在事物执行前和执行后,必须保持数据的一致。
举个例子:A和B之间进行转账,A和B的钱加起来一种是2000块钱,那么无论他们之间 进行了多少次的转账操作,最后的钱数加起来应该还是等于2000。
3.隔离性 (Isolation)
隔离性:一个事物执行的过程当中,不能被其他的事物干扰。比如有事物A和事物B,相对于A来说,你B想要执行,要么在我执行之前执行,要么在我执行完毕之后,你再开始执行。
4. 持久性 (Durability)
持久性:事物被提交之后,他就被永久的存储到了数据库当中。
2、不考虑事物的隔离性所引发的问题
1. 脏读
一个事物读取到了一个未提交的事物的数据。
2. 不可重复读
在读取数据库的某条数据的时候返回了不同的值,造成这个结果的原因是因为我们在查询了一次之后准备进行第二次查询的这个间隔之间,对我们要进行查询的这条数据进行了修改操作,从而导致两次读取的数据不一致。
脏读和不可重复读的区别:
脏读是一个事物读取到了一个未提交事物的脏数据,而不可重复读是一个数据读取了一个已经提交了的事物的数据。
3. 虚度(幻读)
出现幻读不是对一条数据的操作而产生的问题,而是操作多条数据产生的问题,例如:事物A想要对一张表中的某一字段的值进行修改,假设有一个字段的值全部为1,事物A现在想要将1全部修改为2,在提交事物之后,事物B接着又进行了一个操作,在这张表中添加了一个字段,值全部为1。那么这时候操作事物A的用户在查看的时候,会发现还有一行数据没有进行修改,其实这是事物B在他查看之前添加的。
幻读和不可重复读都是读取了一个已经提交的事物,而脏读是读取了一个未提交的事物。不同的是不可重复读查询的是同一条数据,而虚读查询的是批量数据。
3、MySQL数据库的四种隔离级别
1、 Serializable (串行化):可避免脏读、不可重读读、幻读的发生
2、 Repeatable read (可重复读):可避免脏读、不可重复读的发生。
3、 Read committed (读已提交):可避免脏读的发生。
4、 Read uncommitted (读未提交):最低级别,任何情况都无法保证。
以上四种的隔离级别最高的Serializable,最低的是Read uncommitted,级别越高,虽然安全级别越高,但是执行的效率就越低,MySQL中默认的隔离级别是:Repeatable read(可重复读),oracle默认的隔离级别是:Read committed(读已提交)。
这里需要注意的是,mysql支持以上四种隔离级别,但是oracle只支持Serializable(串行化)和Read committed(读已提交)这两种隔离级别。
MySQL中查看当前的事物隔离界别

设置mysql的隔离级别

记住:设置数据库的隔离级别一定要是在开启事物之前!
隔离级别的设置只对当前的链接有效。对于MySQL窗口来说,一个窗口就是一个链接,当前设置的事物隔离级别只对当前的窗口有效。
数据库操作事物的四大特性以及MySQL数据库的四种隔离级别的更多相关文章
- mysql ACID与四种隔离级别归纳总结
关于数据库的ACID特性已经有很多的介绍,这里再重新归纳总结一下: A(atomicity)原子性: 即事务要么全部做完,要么全部不做,不会出现只做一部分的情形,如A给B转帐,不会出现A的钱少了, ...
- MySQL事务的四种隔离级别
事务的基本要素: 原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态. 一致性(Consistency):事务开始后,数据库的完整性约 ...
- 简单理解:数据库的一致性与四种隔离级别(+MySQL实现)
并行数据库存在着几种常见不一致问题: 1.更新丢失:两个并发的写进程同时修改某内容,一个没修改完提交之后另一个又提交,导致其覆盖了第一个提交的写进程内容. 2.脏读:一个操作读到了另外一个操作没有提交 ...
- MySQL 四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- MySql四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- 面试问烂的 MySQL 四种隔离级别,看完吊打面试官!
阅读本文大概需要 5.6 分钟. 来源:网络 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操 ...
- MySQL 四种隔离级别详解,看完吊打面试官
转发链接:https://zhuanlan.zhihu.com/p/76743929 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就 ...
- 数据库事务 ACID属性、数据库并发问题和四种隔离级别
数据库事务 ACID属性.数据库并发问题和四种隔离级别 数据库事务 数据库事务是一组逻辑操作单元,使数据从一种状态变换到另一种状态 一组逻辑操作单元:一个或多个DML操作 事务处理原则 保证所有事务都 ...
- MySQL面试题--常见的四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
随机推荐
- SpringBoot整合Zookeeper和Dubbo
一.Dubbo 1. Dubbo定义 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来 ...
- JQuery里面的下啦菜单
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Trapping Rain Water (Bar Height) -- LeetCode
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- [xsy2213]tower
题意:给一个地图,地图上的每个位置是空地或一个炮或一些敌人,给定每个炮的方向(上/下/左/右),每个炮只能打一个位置且炮弹轨迹不能相交,问最多打到多少敌人 原题貌似是TC SRM 627的题,题解在这 ...
- jsp笔记2(编译指令与动作指令)
一.jsp的编译指令是通知jsp引擎的消息,不会生成输出. jsp的3个编译指令: page:针对当前页面的指令 include:包含另一个页面的指令 taglib:用于定义和访问自定义标签 ...
- SQL 连表更新
现在数据如下: 需求如下: 要求 更新 Earnings 表中的Earnings字段 当 Table_2 KPI 大于等于1时 Earinings = KPI* 2000,否则等于 KPI* 1500 ...
- IE8下 input标签内padding失效
在做网页兼容时 发现在ie8下的input内用padding失效 为了达到居中文字的效果 使用line-height可以解决问题
- RMAN BACKUP
转自 RMAN BACKUP backup terminology Using the RMAN BACKUP Command to Create Backups Server-Managed Con ...
- ResourceBundle (读取properties文件及中文乱码解决方法)
原文:http://blog.csdn.net/joecheungdishuiya/article/details/6304993 public class test { static Resourc ...
- VirtualBox – Error In supR3HardenedWinReSpawn
Genymotion 模拟器安装好虚拟机后,启动时报错: ————————— VirtualBox – Error In supR3HardenedWinReSpawn ————————— <h ...