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会默认提供多种存储引擎,你能够通过以下的查看: ...
随机推荐
- Linux 下安装 tomcat
前提:已经安装配置好了 JDK 1.下载二进制文件 wget http://us.mirrors.quenda.co/apache/tomcat/tomcat-9/v9.0.19/bin/apache ...
- sha256_transform
DECLSPEC void sha256_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *dig ...
- Analysis of Servlet
@WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...
- Python列表的三种遍历(序号和值)的方法
#-×-coding:utf-8-*- if _name_=='_main_': list=['html','js','css','python'] #方法1 print ‘遍历列表方法1’ for ...
- [转]使用screw plus来保护php代码安全
原文链接 https://www.jianshu.com/p/f6425e2f8643 https://github.com/del-xiong/screw-plus http://git.oschi ...
- python windows环境响铃
import winsound winsound.Beep(600,1000) #其中600表示声音大小,1000表示发生时长,1000为1秒
- Selenium+TestNG+Maven+Jenkins+SVN(转载)
转载自:https://blog.csdn.net/u014202301/article/details/72354069 一. 创建Maven项目,下载Selenium和TestNG的依赖(依赖可以 ...
- html初识form表单
定义和用法 <form> 标签用于为用户输入创建 HTML 表单. 表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. 表单用于向服务器传输数据.通过submit ...
- 2019 年 React 学习路线图(转)
转自:https://www.infoq.cn/article/AEkiVAiJf25LZmoUe_yc 之前我们已经介绍了2019 年 Vue 学习路线图,而 React 作为当前应用最广泛的前端框 ...
- hibernate NUMBER 精度
通过Hibernate映射实体时会根据数据库中NUMBER类型的精度,生成相应的POJO类中相对应的主键类型.经过亲测结果如下: NUMBER(1) POJO类中生成的是Boolean publicc ...