事务概念及存储引擎

  1.0 为何要事务?

  先来看一个场景,银行转账汇款:

  李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元

  设计如下表

  account表

  编号(id)用户名(user)金额(cash)

  1李彦宏3000

  2周鸿祎2000

  传统的做法:

  mysql> update account set cash = cash -1000 where id =2;

  update account set cash =cash +1000 where id=1;

  缺陷:

  不安全。比如减少李彦宏钱的指令执行了,但是增加周鸿祎钱的指令却没有执行成功。

  这个时候,我们就要使用mysql的事物机制。

  1.1事务

  

  1.2事务的使用

  事务相关语句 DTL

  

  1.3事务的四种特性:

  1.原子性,是一个不可分割的逻辑单元,一组sql语句,要么都执行,要么都不执行。

  2.隔离性,事务中的执行过程是不可见的。

  3.持久性,事务一旦提交,就不可撤销。

  4.一致性,事务在发生之前和发生之后,数据是一致。(能量守恒)

  1.4事务的原理:

  传统方式:

  

  事务机制:

  

  上面的例子:李彦宏给周鸿祎转钱用事物的代码:

  #开启事物

  Start transaction;

  #执行的代码

  Update account set cash=cash-1000 where id=1;

  Update account set cash+1000 where id=2;

  #提交

  commit

  # 语句出错 可以回滚

  #rollback

  1.5事务在哪些场合下应用:

  一般来说,对于安全性要求比较的业务,建议使用事务。

  2.0 mysql存储引擎

  何为存储引擎?

  我们说数据库是组织、存储和管理数据的仓库。那么,数据库存储数据的方式,就是存储引擎。

  在mysql中,存储引擎是以插件的形式加载的。Mysql的存储引擎种类繁多,对于我们来说,要熟悉两种存储引擎去,MyISAM和inonoDB。

  Myisam不支持事务。

  Innodb支持事务。

  全文索引在mysql5.5以前版本中,innodb是不支持的,但是5.5以后的版本支持。

  常见存储引擎

  

  mysql默认的存储引擎,

  在mysql5.5以前的版本:MyISAM

  在mysql5.5以后的版本:innodb

  如果我们要自己声明存储引擎:

  Create table()engine=myisam default charset utf8

mysql事务与mysql储存引擎的更多相关文章

  1. MySQL数据库常识之储存引擎

    我的博客 储存引擎分类 show engines; 这个命令可以查看数据库的数据引擎,可以看到InnoDB是默认的引擎. 命令除了在终端运行,也可以在查询数据库可视化工具中运行. 而,(我是5.7版本 ...

  2. MySQL数据库储存引擎Inoodb一--记录储存结构

    在开文我先说明一下,接下来的数据库知识文章都是在微信公众号“我们都是小青蛙”学习然后在通过自己的理解进行书写的.有兴趣的朋友可以去关注这个微信公众号.话不多说,我们在日常使用数据库进行数据持 久化的时 ...

  3. mysql 事务、游标

    mysql 事务 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎. 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行 ...

  4. spring事务和mysql的隔离级别

    mysql事务.mysql隔离级别.mysql锁.mysql数据一致性.Spring事务.Spring事务传播性之间的关系 一直有些模糊,整理一下.   mysql事务: 在mysql中,只有使用了I ...

  5. mysql事务隔离分析

    首先说明下,这里主要内容为整理总结网络搜索的零散信息. 写在最前面,mysql事务是在Innodb引擎中得以实现的,如果这点不了解的话,请自行了解. 事务直接数据的可见性通过MVCC(多版本并发控制) ...

  6. MySQL事务部分回滚-回滚到指定保存点

    我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态. 定义保存点,以及回滚到指定保存点前状态的语法如下. 定义保存点---SAVEPOINT 保存点名; ...

  7. mysql 的 存储结构(储存引擎)

    1 MyISAM:这种引擎是mysql最早提供的.这种引擎又可以分为静态MyISAM.动态MyISAM 和压缩MyISAM三种:    静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的, ...

  8. Mysql 储存引擎

    查看当前版本支持哪些储存引擎 mysql> show engines; InnoDB 支持事务机制 : 保证操作安全性 行级锁定 : 开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...

  9. MySQL数据库Innodb储存引擎----储存页的结构

    上一篇博客回顾: 1:数据库拥有众多的储存引擎,现在主要使用的是Inoodb,这个储存引擎有Compact,Redundant,Dynamic,Compressed四种行格式 2:Compact行格式 ...

随机推荐

  1. ubuntu下nfs服务器的安装与配置

    nfs服务器的安装和配置 1.安装nfs 服务器,前提是你的系统能连上网. 2.设置/etc/exports配置文件 (1) 进入/etc/exports配置文件 (2) 在最后一行加入红色那行,/h ...

  2. 查看jquery绑定的事件函数

    作为技术狂热分子的职业本能,看到一个技术产品的功能,总会忍不住想知道它是怎么被实现的.比如我每每看到别人网站一个很炫的界面或者很酷的功能,就忍不住打开了浏览器的控制台... 好,不扯远,说说当你想看到 ...

  3. C#的委托 Action<>和Func<>

    其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: [csharp]  public delegate vo ...

  4. maxscript,MAXScript Listener下输入print "hi"为什么输出两次

    第一次是print "hi"的输出,第二次是print "hi" 的返回值被输出. 参考:https://davewortley.wordpress.com/2 ...

  5. C#的浅拷贝和深拷贝

    C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量 对于值类型变量,深拷贝和前拷贝都是通过赋值操作符号(=)实现,其效果一致,将对象中的值类型的字段拷贝到新的对象中.这个很容易理解. 本文重 ...

  6. 用c#读取文件内容中文是乱码的解决方法:

    用c#读取文件内容中文是乱码的解决方法: //方法1: StreamReader din = new StreamReader(@"C:\1.txt", System.Text.E ...

  7. C/C++ 函数压栈方式

    一,不同关键字,系统压栈方式 1,如果函数func是__cdecl(VC下的默认调用方式),调用时情况如下 int   main()   {   //参数从右到左压栈   push   4   pus ...

  8. 使用Lucene.Net实现全文检索

    使用Lucene.Net实现全文检索 目录 一 Lucene.Net概述 二 分词 三 索引 四 搜索 五 实践中的问题 一 Lucene.Net概述 Lucene.Net是一个C#开发的开源全文索引 ...

  9. Python Beautiful Soup模块的安装

    以安装Beautifulsoup4为例: 1.到网站上下载:http://www.crummy.com/software/BeautifulSoup/bs4/download/ 2.解压文件到C:\P ...

  10. DHCP协议讲解

    一.DHCP服务介绍: DHCP为动态主机配置协议,该协议能自动配置主机的IP地址.子网掩码.网关及DNS服务器等TCP/IP信息.DHCP可以降低客户机IP地址配置的复杂度和网络管理成本. DHCP ...