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事物管理的更多相关文章

  1. Spring中的事物管理,用 @Transactional 注解声明式地管理事务

    事物: 事务管理是企业级应用程序开发中必不可少的技术,  用来确保数据的 完整性和 一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四 ...

  2. 集成Spring事物管理

    什么是事物 事物是访问数据库的一个操作序列,数据库应用系统通过事物集来完成对数据库的存取.事物的正确执行使得数据库从一种状态转换为另一种状态. 事物必须服从ISO/IEC所制定的ACID原则.ACID ...

  3. MySQL 日志管理详解

    大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...

  4. Spring学习之声明式事物管理

    public List<Student> selectStudent() { Student s = new Student(); s.setName("zhengbin&quo ...

  5. mysql事物处理

    mysql事物主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等.这样,这些数据库操作语句就构成一个事 ...

  6. python事物管理及同步锁

    我们经常会遇到这样子的问题,我给朋友赚钱100,分为两步: 1)我的账户-100 2)朋友账户 +100 看似需求很简单,但是如果在上面的步骤1)结束后,系统崩溃了怎么办? 数据库中有事物管理,也就是 ...

  7. springBoot的事物管理

    springBoot的事物管理 1:springBoot 整合单数据源事物: Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务 ...

  8. Spring事物管理--相关要点及配置事物管理器

    事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...

  9. spring 事物管理没起到作用

    今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: ...

随机推荐

  1. Ontology理论研究和应用建模

    转自:https://www.cnblogs.com/yes-V-can/p/8151275.html 目录 1 关于Ontology 1.1 Ontology的定义 1.2 Ontology的建模元 ...

  2. 【读书笔记】segment routing mpls数据平面-2

  3. php7 curl返回false error返回空串

    php7 CURLOPT_SSL_VERIFYPEER 禁用后cURL将终止从服务端进行验证.使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURL ...

  4. docker原理(转)

    可能是把Docker的概念讲的最清楚的一篇文章 [编者的话]本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令. Docker是世 ...

  5. /etc/security/limits.conf的相关说明

    今天遇到root账户登录不了的情况,很是郁闷,即使单用户修改了root密码也不能登录. 所以就特意看了一下/etc/security/limits.conf,发现是下面这样的.感觉呗坑了许久.(标红线 ...

  6. linux下nginx日常操作

    一.检查配置文件语法 [root@node2 /]# nginx -tc /usr/local/nginx/conf/nginx.conf nginx: the configuration file ...

  7. QUARTZ系列之零:概述

    前言: 很早就会使用quartz进行任务调度了,然一直只是会用,甚至只是会用如下的套路: { 1.获取个schedule 2.实例一个job 3.实例一个trigger 4. schedule.sch ...

  8. C语言博客作业01--分支、顺序结构

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 通过本章的学习,学会了三种基本结构以及一些基本的运算知识,学会编写简单的程序,跟着老师的步子学习基本的东西都能 ...

  9. 【练习】Python第四次:实现对文件的增删改查

    一,实现对文件的增删改查 (一),三级菜单的处理结构及退出技巧:使用TAG标记 tag=True while tag: print('leve1') choice=input("level1 ...

  10. java中java.exe,javac 在editplus中的配置

    java.exe,javac设置快捷键(editplus) 1.tools-preferences 2.add tools---program java关键字