事务的概念:
1.事务是一组sql语句的执行,要么全部成功,要么全部失败。保证事务执行的原子性。
2.事务的全部sql语句执行成功,才能提交,将结果写回到磁盘上。
3.事务执行过程中,有的SQL执行失败,那么事务必须回滚到最初的状态。
事务的ACID特性:
事务的原子性(Automic):
事务是一个不可分割的整体,事务必须具有原子性,当修改数据时,要么全部执行,要么都不执行,即不允许事务部分完成。
事务的一致性(Consistency):
一个事务执行前后,数据库数据必须保持一致性状态。数据库的一致性状态必须由用户来负责,由并发控制机制实现。就拿网上购物来说,你只有让商品出库,又让商品进入顾客的购物车才能构成一个完整的事务,商品的数量对于整体并没有发生变化!由于并发操作带来的数据不一致性包括读脏数据(脏读),不可重复读和虚读(幻读)。
事务的隔离性(Isolation):
当两个或者多个事务并发执行时,为了保证数据的安全性,将一个事物内部的操作与其它事务的操作隔离起来,不被其它正在执行的事务所看到,例如对任何一对事务T1和T2,对T1而言,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。隔离性使得每个事务的更新在它被提交之前,对其它事务都是不可见的
事务的持久性(Durability):
事务完成之后,它对数据库数据的修改,是永久性的。
事务的隔离级别:
事务不经隔离,并发执行事务时,常发生以下问题:
脏读:一个事务读取了另一个事务未提交的数据。
不可重复读:一个事务的操作,导致另一个事务前后读取到不同的数据。
虚读/幻读:
一个事务的操作导致另一个事务前后两次查询的结果数据量不同。例如当事务A和事务B并发执行时,当事务B查询读取数据后,事务A新增或者删除了一条满足事务B查询条件的记录,此时事务B再去查询,发现查询到前一次不存在的记录,或者前一次查询的一些记录不见了。(事务B读取了事务A新增加的数据或者读不到事务A删除的数据)
Mysql提供了四种隔离级别:
READ UNCONMITED(未提交读):在READ UNCONMITED级别,事务即使没有提交,对其他事务也是可见的。事务可以读取其他事务未提交的数据,即脏读。
READ CONMITED(提交读):READ CONMITED满足前面对隔离性的简单定义,一个事务开始时,只能看见已经提交的事务所做的修改。换句话说,一个事务从开始时到提交前所做的修改,对其他事务是不可见的。这个级别也叫不可重复读,因为执行两次相同的查询,前后两次可能得到不同的结果。
REPEATABLE READ(可重复读):这个级别保证了同一个事务多次执行相同的查询,得到的结果是一致的。它是Mysql默认的隔离级别
SERIALIZABLE(可串行化):最高的隔离级别。避免了幻读的问题,它是在读取的每一行数据上都加锁,所有性能较低。
JDBC提供了5种隔离级别
除了Mysql提供的四种,还有一个 TRANSACTION_NONE, 表示不支持事务。
需注意:事务隔离级别越高,为避免冲突所花费的性能也就越多。可以通过Connection接口下面的函数来设置事务的隔离级别:

可重复读的实现原理

深入理解Mysql事务ACID特性以及事务隔离级别相关推荐

  1. MySQL 事务 | ACID、四种隔离级别、并发带来的隔离问题、事务的使用与实现

    文章目录 事务 ACID 并发带来的隔离问题 幻读(虚读) 不可重复读 脏读 丢失更新 隔离级别 Read Uncommitted (读未提交) Read Committed (读已提交) Repea ...

  2. Spring事务传播特性与事物隔离级别

    红花易衰似郎意,水流无限似侬愁.--刘禹锡<竹枝词> 传播特性: 传播行为 意义 PROPAGATION_MANDATORY 表示该方法必须运行在一个事务中.如果当前没有事务正在发生,将抛 ...

  3. 【概念原理】四种SQL事务隔离级别和事务ACID特性

    2019独角兽企业重金招聘Python工程师标准>>> 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UN ...

  4. Spring事务处理,以及Spring事务的传播属性和隔离级别

    本文转自:http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html 事务的隔离级别:事务隔离级别用于处理多事务并发的情况,通常使用 ...

  5. SHOW VARIABLES LIKE “tx_isolation“查看mysql查看当前数据库的事物隔离级别

    SHOW VARIABLES LIKE "tx_isolation"查看mysql查看当前数据库的事物隔离级别

  6. 数据库的事务ACID特性以及MySQL如何保持事物特性

    数据库的ACID特性 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响 ...

  7. MySQL事务ACID特性

    一.事务的基本要素(ACID) 1.原子性(Atomicity):MySQL事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操 ...

  8. acid四大特性_深入理解MySQL的ACID四大特性原理

    专注于Java领域优质技术,欢迎关注 作者:孤独烟 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,ACID嘛,原子性(Atomicity) ...

  9. 数据库事务ACID特性分析

    在日常生活中,事务是无时无刻不存在的,什么是事务,按我的理解事务便是执行一段连续的不可分离的操作,这段操作是为了实现某一个目的而执行的,它不存在中间状态,要么执行成功,则该操作所带来的影响永久存在,要 ...

最新文章

  1. Test Reprot
  2. 关于版本控制工具GitHub安装报错
  3. AlertDialog创建6种对话框的用法
  4. 树莓派支持uvi协议吗_树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi)...
  5. HDFS Client 设计实现解析
  6. 原版英文书籍《Linux命令行》阅读记录5 | 使用命令
  7. CSS3背景图片百分比及应用
  8. C++Primer Plus第6版C Primer Plus第6版 中文版免费分享啦
  9. html中logo不变形,CSS3如何实现LOGO中的文本变形动画
  10. python求字符组合_python – 生成一个潜在的8个字符串的所有可能的2个字符组合?...
  11. 自动驾驶_高精地图与车辆协同
  12. CMake 简单入门
  13. 堆排序(java完整代码)
  14. unionid openid微信php,微信的openID、unionID等总结
  15. intel 9260AC网卡修改成Killer 1550
  16. MD5 密码破解 碰撞 网站
  17. html首页随机飘浮图片,jQuery 全屏随机漂浮图片广告
  18. 杭电计网实验15 ACL网络访问控制 (球球、球球,可以点个赞吗)
  19. 2021-08-23:启动idea项目时,控制台显示java程序包不存在,解决办法:Error:java xxxx 程序包不存在
  20. 新闻App详细开发流程和结构搭建

热门文章

  1. 什么是annotations
  2. java.lang.NullPointerException: null
  3. hadoop的小疑问:Map执行未结束便开始执行Reduce操作?
  4. Android 跳转电话、邮件、短信等系统页面
  5. “没有40K当什么程序员?”
  6. excel 电阻并联计算_3个并联电阻计算公式 并联电阻计算公式计算方法
  7. 如何用计算机做函数图像,用计算机画函数图像 优秀教学实录
  8. [实用理论] 互联网广告的产业链:广告主(advertiser),媒体(publisher),广告商(agency)
  9. 【Matplotlib】三维图及其俯视图+colorbar的位置调整与颜色、刻度细化
  10. string.h头文件