MySQL事物管理
sql语句对数据库操作构成事物。
事物的特性:ACID
•Atomicity(原子性):一个事物要么全都被执行,要么全都不执行,不会存在执行结束在中间环节。如果事物在执行过程中发生异常,则会回滚到事物执行之前的状态。可以简单认为"同生共死"。
•Consistency(一致性):在事物开始之前和事物结束之后,数据库的完整性没有被破坏,操作符合预期。
•Isolation(隔离性):同一时间,只允许一个事物请求同一数据。同一时间多个用户并发访问数据库时,数据库为每一个用户开启一个事物,不同事物之间彼此互相隔离。
•Durability(持久性):一个事物一旦被提交,那么对数据库中数据的影响是永久的,即使数据库遇到故障也不会改变事物对数据库的操作。
对于事物,如果不考虑隔离级别,则会出现问题:
1.脏读
对于事物A和B,事物A读取了B未提交的数据,事物B遇到异常进行了回滚操作,那么就会产生脏读。
2.不可重复读
事物A多次对同一数据进行读取,在读取过程中事物B对数据进行多次修改,导致事物A每次读取的数据都不一致(侧重于修改)。
3.幻读
事物A对数据进行了修改,事物B进行了插入或删除操作,事物A操作结束以后发现仍旧存在未被修改的数据,仿佛幻觉一样,称之为幻读(侧重于新增或删除)。
数据库提供四种隔离级别:
| 事物隔离级别 | 脏读 | 不可重复读 | 幻读 |
| 读未提交 | 会 | 会 | 会 |
| 读已提交 | 否 | 会 | 会 |
| 可重复读 | 否 | 否 | 会 |
| 序列化 | 否 | 否 | 否 |
1.读未提交(Read Uncommitted)
可以读取到未被提交的数据
2.读已提交(Read Committed)
可以读取已经提交的数据
3.可重复读(Repeatable Read)
在数据读取之后加锁,明确数据读取是为了更新,不允许其他事物进行修改,类似读取数据之后事物不结束,其他事物无法操作。
4.序列化(Serializable)
对于一个事物,必须执行完该事物的所有子事物才可以执行其他的事物 。
隔离级别:序列化>可重复读>读已提交>读未提交
MySQL事物管理的更多相关文章
- Spring中的事物管理,用 @Transactional 注解声明式地管理事务
事物: 事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的 完整性和 一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四 ...
- 集成Spring事物管理
什么是事物 事物是访问数据库的一个操作序列,数据库应用系统通过事物集来完成对数据库的存取.事物的正确执行使得数据库从一种状态转换为另一种状态. 事物必须服从ISO/IEC所制定的ACID原则.ACID ...
- MySQL 日志管理详解
大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...
- Spring学习之声明式事物管理
public List<Student> selectStudent() { Student s = new Student(); s.setName("zhengbin&quo ...
- mysql事物处理
mysql事物主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等.这样,这些数据库操作语句就构成一个事 ...
- python事物管理及同步锁
我们经常会遇到这样子的问题,我给朋友赚钱100,分为两步: 1)我的账户-100 2)朋友账户 +100 看似需求很简单,但是如果在上面的步骤1)结束后,系统崩溃了怎么办? 数据库中有事物管理,也就是 ...
- springBoot的事物管理
springBoot的事物管理 1:springBoot 整合单数据源事物: Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务 ...
- Spring事物管理--相关要点及配置事物管理器
事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...
- spring 事物管理没起到作用
今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: ...
随机推荐
- HTML - form (转)
自:http://www.runoob.com <form> 标签 标签定义及使用说明 <form> 标签用于创建供用户输入的 HTML 表单. <form> 元素 ...
- 使用TensorFlow训练模型的基本流程【转】
原文地址(https://github.com/wmpscc/TensorflowBaseDemo ) 本篇文章将介绍使用tensorflow的训练模型的基本流程,包括制作读取TFRecord,训练和 ...
- 【STM32】临界区进入退出宏 OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL()
宏函数展开为: #define OS_CRITICAL_METHOD 3 #if OS_CRITICAL_METHOD == 3 #define OS_ENTER_CRITICAL() {cpu_sr ...
- 【UiPath 中文教程】02 - 创建自定义 Activity
在 UiPath Studio 中,活动 (Activity) 是流程自动化的基石,是构成自动化程序的最小模块.它们被包含在一个个 NuGet 包中. UiPath Studio 中有 3 类包: 官 ...
- Python 学习笔记01篇
编程基础很零碎 看了路飞学城的讲解视频,整体课程列表排列很清晰,每个视频都在十几分钟到二十几分钟之间,适合零碎化的的学习 第一章和第二章的前半部分可以较轻松地入门
- ajax、json、jsonp
这章分享下ajax.json.jsonp的学习记录,不得不说这真是些令人激动的技术. 推荐文章: https://segmentfault.com/a/1190000012469713 http:// ...
- 知识点---animate()动画滞后执行的解决方案
jQuery动画: animate 容易出现连续触发.滞后反复执行的现象: 针对 jQuery 中 slideUp.slideDown.animate 等动画运用时出现的滞后反复执行等问题的解决方法有 ...
- day49 定位布局和过渡动画
复习 1.盒子在父级水平居中 margin: 0 auto; 2.文本样式操作 color: red; text-align: center; font: 900 30px/200px "S ...
- 哈尔滨工程大学ACM预热赛(A,C,H,I)
A: 链接:https://ac.nowcoder.com/acm/contest/554/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...
- myhabits where in foreach
myhabits传入参数:类,其中类中包含字符串数组String[] 当查询where in String[]时 <select id="selectData" parame ...