MySQL从5.5.8开始,Innodb就是默认的存储引擎,Innodb最大的特点是:支持事务、支持行级锁。

既然支持事务,那么就会有处理并发事务带来的问题:更新丢失、脏读、不可重复读、幻读;相应的为了解决这四个问题,

就产生了事务隔离级别:未提交读(Read uncommitted),已提交读(Read committed),可重复读(Repeatable read),可序列化(Serializable)。

并发事务会带来的问题

在平常的项目开发里数据库操作一般都是并发执行的,即有多个事务并发执行,数据库事务并发带来的问题有:

1、丢失更新:最后的更新覆盖了其他事务之前的更新,而事务之间并不知道,发生更新丢失。更新丢失,可以完全避免,应用对访问的数据加锁即可。

2、脏读:一个事务看到了另一个事务未提交的更新数据;当事务读取尚未提交的数据时,就会发生这种情况。

例如事务A正在访问数据,并且对数据进行了修改,更改了一行数据,这种修改还没有提交到数据库中,而事务B在事务A提交更新之前读取了已更新的行,然后使用了这个数据。

如果事务A回滚该更新,则事务B使用的这个数据由于还没有提交,就会被认为是不曾存在的数据,即为脏数据,根据脏数据所做的操作可能是不正确的。

事务B读取到事务A已经修改但尚未提交的数据。

3、 不可重复读:在同一事务中,两次读取同一数据,得到内容不同,也就是有其他事务更改了这些数据;

指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。

4、幻读:一个事务在执行过程中读取到了另一个事务已提交的插入数据;即在第一个事务开始时读取到一批数据,但此后另一个事务又插入了新数据并提交,此时第一个事务又读取这批数据但发现多了一条,即好像发生幻觉一样。

脏读:读取到修改但未提交的数据

幻读:读取到新增且已提交的数据

事务隔离机制

并发处理带来的问题中,更新丢失可以完全避免,由应用对数据加锁即可。脏读、不可重读度、幻读,其实都是数据库的一致性问题,必须由一定的事务隔离机制来解决。

mysql事务 并发_Mysql关于事务并发带来的问题相关推荐

  1. mysql事务并发控制_MySQL之事务及并发控制

    本节索引: 一.事务Transaction 二.事务的隔离级别 三.并发控制 四.MVCC-多版本的并发控制协议 一.事务 什么是事务? 事务Transactions:一组原子性的SQL语句,或一个独 ...

  2. mysql 业务账户_mysql的事务

    一.事务定义 Transaction 事务:一个最小的不可再分的工作单元:通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元) 一个完整的业务需要批量的DML(inse ...

  3. mysql有三种事务模式_MySQL之事务与三大范式

    一.MySQL事务 在MySQL中将一组有序的增删改操作看做一个独立的执行单元,当这一组所有的操作都成功,事务执行成功,如果其中有一个操作失败,事务执行回滚.MySQL 事务主要用于处理操作量大,复杂 ...

  4. mysql 数据库事务处理_MySQL数据库事务及其原理

    基本概念 MySQL 事务主要用于处理操作量大,复杂度高的数据. 银行转账是经典的解释事务的例子.用户A给用户B转账5000元主要步骤可以概括为如下两步. 第一,账户A账户减去5000元: 第二,账户 ...

  5. mysql 5.1支持事务吗_MySQL的事务和隔离级别 | 旺旺知识库

    一.什么是事务? 数据库的事物,是指将一系列的操作作为一个逻辑单元来执行,即加入由十条SQL语句组成的一个事物,则要么则十条都执行成功,要么都不执行!事务处理可以确保除非事务性单元内的所有操作都成功完 ...

  6. mysql会话事务隔离_MySQL的事务隔离级别

    MySQL的事务隔离级别 隔离级别 1.事务的隔离级别决定了事务之间可见的级别. 2.当多个客户端并发地访问同一个表时,可能出现下面的一致性问题: ● 脏读取(Dirty Read) 一个事务开始读取 ...

  7. 什么是mysql事物定义_MySQL中事务概念的简洁学习教程

    事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务. 事务具有四个特性:原子性(Atomici ...

  8. 一条mysql语句是事务吗_mysql中事务

    事务控制语言 什么叫做"事务": 想象一个场景: 小明给小花 汇款 5000元 买IPHONE,操作界面不用管,不管什么操作界面,最终都要落实到这样两条语句的执行: update ...

  9. mysql 长事务查询_MySQL长事务详解

    前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本篇 ...

最新文章

  1. 从零开始用 Flask 搭建一个网站(二)
  2. 干货 | 深度学习检测小目标常用方法
  3. antd form rules字数限制_【React】antd的form表单的自定义校验规则的用法
  4. 云计算将使IT人失业?惠普推云计算裁员九千!程序员如何面对即将到来的产业大调整?...
  5. leetcode 1143. 最长公共子序列(dp)
  6. BDTC 2017 | 中国大数据技术大会全日程和演讲者曝光
  7. 构建websocket服务
  8. 搜索引擎只能抓取html文件,为什么有些明明存在的网页不能被搜索到?
  9. 仿百度外卖的酷炫水波纹效果
  10. matlab如何获得数组有多少数,请问MATLAB里有得到一个数组中相同数有多少个的函数么?...
  11. Dwg TrueView 2018中文版
  12. 【机器学习】解释机器学习模型
  13. 拍频和混频 PD拍频
  14. java安装的时候无效参数,java.sql.SQLException: 调用中无效的参数
  15. 如何利用ewomail搭建邮件服务器
  16. 硕士学位论文格式调整技巧
  17. IDEA创建一个JavaWeb项目详细步骤
  18. 输出一个由*组成的三角形图案_一文带你读懂集成电路的组成与封装形式
  19. 条码标签打印软件制作学校考卷条码
  20. 人工智能实验评价指标_打造“一脑五平台”,松山湖北区学校发布无痕教育评价系统...

热门文章

  1. Fedora Linux基本配置
  2. python中日期和时间格式化输出的方法
  3. 利用Python批量重命名一系列文件名杂乱的文件
  4. POJ1182 食物链---(经典种类并查集)
  5. vuejs之Vue Devtools
  6. double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码
  7. 获取子元素上面父元素中最大的z-index(z-index在chrome的兼容问题)
  8. 【Oracle】ORA-04031错误解决
  9. Flutter: 显示/关闭系统叠加层ui
  10. C# 合并多种格式文件为PDF