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数据库的四种隔离级别的更多相关文章

  1. mysql ACID与四种隔离级别归纳总结

    关于数据库的ACID特性已经有很多的介绍,这里再重新归纳总结一下:   A(atomicity)原子性: 即事务要么全部做完,要么全部不做,不会出现只做一部分的情形,如A给B转帐,不会出现A的钱少了, ...

  2. MySQL事务的四种隔离级别

    事务的基本要素: 原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态. 一致性(Consistency):事务开始后,数据库的完整性约 ...

  3. 简单理解:数据库的一致性与四种隔离级别(+MySQL实现)

    并行数据库存在着几种常见不一致问题: 1.更新丢失:两个并发的写进程同时修改某内容,一个没修改完提交之后另一个又提交,导致其覆盖了第一个提交的写进程内容. 2.脏读:一个操作读到了另外一个操作没有提交 ...

  4. MySQL 四种隔离级别

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...

  5. MySql四种隔离级别

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...

  6. 面试问烂的 MySQL 四种隔离级别,看完吊打面试官!

    阅读本文大概需要 5.6 分钟. 来源:网络 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操 ...

  7. MySQL 四种隔离级别详解,看完吊打面试官

    转发链接:https://zhuanlan.zhihu.com/p/76743929 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就 ...

  8. 数据库事务 ACID属性、数据库并发问题和四种隔离级别

    数据库事务 ACID属性.数据库并发问题和四种隔离级别 数据库事务 数据库事务是一组逻辑操作单元,使数据从一种状态变换到另一种状态 一组逻辑操作单元:一个或多个DML操作 事务处理原则 保证所有事务都 ...

  9. MySQL面试题--常见的四种隔离级别

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...

随机推荐

  1. 使用after伪类,配合IE的zoom或者overflow清除浮动

    用after伪类实现,兼容多种浏览器:.clearfix:after {content:"."; display:block; height:0; clear:both; visi ...

  2. Find the Duplicate Number -- LeetCode

    Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...

  3. Burnside引理与polay定理

    #Burnside引理与polay定理 引入概念 1.置换 简单来说就是最元素进行重排列 是所有元素的异议映射,即\([1,n]\)映射到\([1,n]\) \[ \begin{pmatrix} 1& ...

  4. 1.11(java学习笔记)封装

    封装将内部细节封装起来,只暴露外部接口. 比如我们的电视就将复杂的内部线路用外壳封装起来,只留下外部按钮或遥控,用户只需要知道按钮或遥控的作用就可以,无需明白电视内部是如何工作. 而且封装也保障了安全 ...

  5. linux-网络监控命令-netstat初级

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  6. NSPredicate 条件查询或过虑

    NSPredicate用于查询和过滤 在SQL中作为查询条件通常用WHERE,但在COREDATA中作为查询条件就可以用到NSPredicate. NSPredicate 不单可以和COREDATA中 ...

  7. appium 测试模拟器时输入adb devices显示 unauthorized

    https://stackoverflow.com/questions/32132434/set-adb-vendor-keys 也就是点击AVD管理器右边的下拉列表,点击清除数据,再重启虚拟机 0d ...

  8. HDFS删除并清空回收站

    删除文件并放入回收站: hdfs dfs -rm -f /path 删除文件不放入回收站: hdfs dfs -rm -f -skipTrash /path 清空回收站: hdfs dfs -expu ...

  9. sersync+rsync实时数据同步

    sersync+rsync实时数据同步 1.相关背景介绍 前面有关文章配置实现了rsync增量同步以及配置为定时同步,但是在实际生产环境中需要实时的监控数据从而进行同步(不间断同步),可以采取inot ...

  10. TestNG+ReportNG+IDEA+Git+Jenkins+surefire持续集成数据驱动dubbo接口测试

    一.pom.xml增加testng相关配置 <!--添加插件 关联testNg.xml--><plugin> <groupId>org.apache.maven.p ...