1. 什么是事务: 通俗的解释就是对数据库进行的一组完整的操作,这组完整的操作中包含一个或多个操作。解释的太low了,来点官方的:事务就是DBMS中执行的一个完整的逻辑单元,这个逻辑单元中包含一个或者多个操作。
  2. 事务的作用: 上面说了事务的定义,但不太能体现事务的重要性,其实事务是一个很重要的概念,我们经常会听到一些相关的名词: 回滚,隔离(当然这里只是说数据库的,其实这两个概念的含义更加广泛),这就是事务的作用。
      • 回滚:  事务作为一个逻辑单元,具有回滚的作用。回滚就是说我们在进行处理事务的时候,我们能够对事务进行回滚,恢复到事务开始之前的状态。其本质是通过记录事务开始前状态来实现的,这个后面再说吧。
      • 隔离:  隔离,顾名思义就是把这些逻辑单元给隔离起来,不让其他逻辑单元进行干扰。实际应用中我们会有多个线程同时对数据库进行操作,比如A在修改,B也在修改,如果不加以控制,很可能造成脏数据。
  3. 事务特性ACID:  
      • A: Atomicity原子性,怎么理解--就是只存在一个状态的性质,要么执行成功,要么执行失败,只可能是这两种情况,并且只能出现其中一种情况! 
      • C:   Consistency一致性,一致性说的是数据库中的数据满足完整性约束。
      • I:  Isolation隔离性,隔离性的意思是同时存在两个事务的时候不能相互干扰。
      • D: durability持久性,就是事务所做出的更改必须能持久化到硬盘,不至于轻易丢失。 
  4. 上面已经介绍了事务的基本的性质,作用:扯了一堆理论知识,现在我们来点实战性的!!! 

      上面我们已经介绍了事务的概念,那么我们如何操作事务呢?操作的方式有很多,比如java中的jdbc,或者是shell都行!下面我们通过终端来学一下,首先我们应该知道一个概念叫自动提交,那么什么是自动提交呢?这个很好理解,就是在操作数据库时我们不必显示的进行事务提交,而由mysql自动替我们完成。

A.  查看mysql的提交方式:show variables like 'autocommit';能够查看数据库是否是自动提交的。

    B.   设定mysql的自动提交方式:  set autocommit=false;就可以设定mysql不自动提交了。

    C.   自动提交pk手动提交:下面我们来试试自动提交和手动提交的差别:

      • 自动提交:我们执行一条命令后我们就没有反悔的权利了!比如,银行的业务中,A向B转账100元,银行需要做的有两步,首先A银行卡中减去100元,B银行卡中增加100元,但是如果设置为自动提交,当第一步完成了银行服务器宕机了,那么完了,数据出现了问题。所以企业通常都会设置autocommit为false。
      • 手动提交:   
        • 开启事务: 方式begin,start transaction,set autoCommit
        • 提交事务: commit
        • 回滚事务: rollback
        • 事务实例: 举一个例子来说明事务:我们有这样一个员工表Baidu(name,age,salary);

下面我们对这个表进行操作,首先通过上述方法设置开启事务,插入一条数据,查看数据库,提交或者回滚(注意,这里我们在同一个终端进行操作,因为不同终端设计到事务的隔离性。我们下一节会学习)如下:

上面我们已经插入了一个记录,我们可以在本终端进行查看,我们在这个终端可以发现已经插入成功了,但是如果此时进行rollback操作,再查看就会发现插入的数据消失了。如果提交,那么数据将会被持久化到数据库中。

D. 事务的原理:   上面的操作我们会发现,在未提交时我们可以对事务进行回滚,那么我们需要知道为什么能进行回滚呢?实际上mysql是通过日志的方式来进行回滚的,我们在会对事务内的操作进行日志记录,如果发生回滚现象,mysql将会读取日志信息进行redo(将已经执行成功但是没有持久化到硬盘中的数据进行持久化),用这样的办法来保证一致性。然后再将事务中没有提交的部分进行Undo,用此方法来保证原子性。                          

                       

mysql由浅入深探究(四)----mysql事务详解的更多相关文章

  1. PHP mysql与mysqli事务详解

    官方对PHP连接到MySQL数据库服务器的三种主要的API简介如下: http://php.net/manual/zh/mysqli.overview.php PHP mysql与mysqli事务详解 ...

  2. spring事务详解(四)测试验证

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  3. MySQL数据库的各种存储引擎详解

    原文来自:MySQL数据库的各种存储引擎详解   MySQL有多种存储引擎,每种存储引擎有各自的优缺点,大家可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB ...

  4. MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...

  5. 【转】MySQL用户管理及SQL语句详解

    [转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...

  6. mysql数据库分区功能及实例详解

    分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解   一,什么是数据库分区 前段时间写过一篇 ...

  7. (转)MySQL性能调优my.cnf详解

    MySQL性能调优my.cnf详解 https://blog.linuxeye.cn/379.html http://blog.csdn.net/orichisonic/article/details ...

  8. mysql数据库my.ini配置文件中文详解

    mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出 ...

  9. MySQL的用户密码过期功能详解

    MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...

  10. MySql绿色版配置及使用详解

    原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...

随机推荐

  1. php函数: set_error_handler

    <?php // $errno, $errstr, $errfile, $errline , 系统自动生成这四个变量的值(如果存在!) function error_catcher($errno ...

  2. Webpack探索【12】--- externals详解

    本文主要讲externals相关内容. https://segmentfault.com/a/1190000012113011

  3. php总结1 ——php简介、工作原理、运行环境、文件构成、语法结构、注释

    1.1 PHP  超文本预处理程序.实际就是制作网站的脚本程序 1.2 运行环境: wamp——windowns+apache+mySQL+php    常用于开发.学习和研究 lamp ——linu ...

  4. Intellij Idea生成JavaDoc

    JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了.在简略介绍JavaDoc写法之后,再看一下在Intellij Idea 中如何将代码中的注释 ...

  5. 微信小程序配置详解

    在之前已经通过微信公众平台的官方网站https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html,注册好小程序并且登录成功后(这里主 ...

  6. Mysql 外键级联

    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...

  7. Java for LeetCode 137 Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  8. POJ1743 Musical Theme —— 后缀数组 重复出现且不重叠的最长子串

    题目链接:https://vjudge.net/problem/POJ-1743 Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Tot ...

  9. Eclipse_配置_00_资源帖

    1.Eclipse常用设置 2.eclipse设置和优化 3.Eclipse在工作中的一些常用设置及快捷键整理 4.Eclipse常用插件下载地址

  10. mybatis传递多个参数值(转)

    Mybatis传递多个参数   ibatis3如何传递多个参数有两个方法:一种是使用Map,另一种是使用JavaBean. <!--      使用HashMap传递多个参数      para ...