数据库操作事物的四大特性以及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面试题--常见的四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
随机推荐
- 洛谷——2871[USACO07DEC]手链Charm Bracelet——01背包
题目描述 Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like t ...
- JavaScript 函数调用的 this词法
函数调用时的this实际上是在函数被调用时发生绑定,它指向什么完全取决于函数在哪里被调用. 特例:当函数作为构造函数被调用时,即使用new 来构造一个新对象,会自动执行以下操作: [1]创建一个新对象 ...
- 【拓扑排序topsort】【p1226】神经网络
描述 Description 神经网络就是一张有向图,图中的节点称为神经元,而且两个神经元之间至多有一条边相连,下图是一个神经元的例子: 神经元[编号为1) 图中,X1—X3是信息输入渠道,Y1-Y2 ...
- POJ 3680 Intervals(费用流+负权优化)
[题目链接] http://poj.org/problem?id=3680 [题目大意] 有N个带权重的区间,现在要从中选取一些区间, 要求任意点都不被超过K个区间所覆盖,请最大化总的区间权重. [题 ...
- POJ 3470 Walls(线段树+扫描线)
[题目链接] http://poj.org/problem?id=3470 [题目大意] 给出几面墙,均垂直于x轴或者y轴,给出一些鸟的位置(二维坐标点), 鸟只会垂直x轴或者y轴飞行,并且会撞上最近 ...
- 收纳箱1号 | GitHub Pages部署静态网页的一点私货
Static site 总结各种各有的 static site generator Jekyll 其实是一个 static site generator. 如果你去 Google 这个,会发现有很多总 ...
- 玩转Nuget服务器搭建(一)
背景 公司项目是分模块进行架构 ...
- ASIHTTPRequest框架使用总结系列之阿堂教程1(安装配置篇
在前年,阿堂在<IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践>一文中,对于ASIHTTPRequest框架有过一些介简单绍,具体链接地址见http:// ...
- IMAP 命令
最近学习了一下IMAP命令,现在也算总结一下学习的东西,先说说IMAP命令,如果你使用的是163.126邮箱,反正是网易家的邮箱,那么这里就有很多坑要踩了,因为网易邮箱的特殊性,由于网易邮箱在中国占有 ...
- 对类中的成员函数的定义和声明最后添加一个const是什么意思?
1.const修饰的成员函数只能调用const修饰的成员函数,且不能修改数据成员变量的值. 2.const修饰的类对象只能调用const修饰的成员函数. 3.const修饰的类对象可以调用非const ...