mysql事务与mysql储存引擎
事务概念及存储引擎
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储存引擎的更多相关文章
- MySQL数据库常识之储存引擎
我的博客 储存引擎分类 show engines; 这个命令可以查看数据库的数据引擎,可以看到InnoDB是默认的引擎. 命令除了在终端运行,也可以在查询数据库可视化工具中运行. 而,(我是5.7版本 ...
- MySQL数据库储存引擎Inoodb一--记录储存结构
在开文我先说明一下,接下来的数据库知识文章都是在微信公众号“我们都是小青蛙”学习然后在通过自己的理解进行书写的.有兴趣的朋友可以去关注这个微信公众号.话不多说,我们在日常使用数据库进行数据持 久化的时 ...
- mysql 事务、游标
mysql 事务 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎. 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行 ...
- spring事务和mysql的隔离级别
mysql事务.mysql隔离级别.mysql锁.mysql数据一致性.Spring事务.Spring事务传播性之间的关系 一直有些模糊,整理一下. mysql事务: 在mysql中,只有使用了I ...
- mysql事务隔离分析
首先说明下,这里主要内容为整理总结网络搜索的零散信息. 写在最前面,mysql事务是在Innodb引擎中得以实现的,如果这点不了解的话,请自行了解. 事务直接数据的可见性通过MVCC(多版本并发控制) ...
- MySQL事务部分回滚-回滚到指定保存点
我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态. 定义保存点,以及回滚到指定保存点前状态的语法如下. 定义保存点---SAVEPOINT 保存点名; ...
- mysql 的 存储结构(储存引擎)
1 MyISAM:这种引擎是mysql最早提供的.这种引擎又可以分为静态MyISAM.动态MyISAM 和压缩MyISAM三种: 静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的, ...
- Mysql 储存引擎
查看当前版本支持哪些储存引擎 mysql> show engines; InnoDB 支持事务机制 : 保证操作安全性 行级锁定 : 开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...
- MySQL数据库Innodb储存引擎----储存页的结构
上一篇博客回顾: 1:数据库拥有众多的储存引擎,现在主要使用的是Inoodb,这个储存引擎有Compact,Redundant,Dynamic,Compressed四种行格式 2:Compact行格式 ...
随机推荐
- caffe 训练时,出现错误:Check failed: error == cudaSuccess (4 vs. 0) unspecified launch failure
I0415 15:03:37.603461 27311 solver.cpp:42] Solver scaffolding done.I0415 15:03:37.603549 27311 solve ...
- C#中有关string和byte[]转换的问题
byte[] byteArray = System.Text.Encoding.Default.GetBytes( str ); 怎么样,够简单吧? 反过来也是一样,把byte[]转成string: ...
- 【转】个人最常用的Eclipse快捷键
记录下自己在Eclipse中最常使用的快捷键: 其实网上总结多的是,自己记录下自己平时最切身受益的一些快捷键. 1.SHIFT+ ALT+Z(刚学的): 条件:选中一段代码 会弹出上面的右键菜单, ...
- SVN server环境搭建
VisualSVN server搭建: 1. 下载VisualSVN server for Windows安装包:https://www.visualsvn.com/ 2. 安装过程,基本就是下一步一 ...
- javascript中的继承实现
javascript虽然是一门面向对象的语言,但是它的继承机制从一开始设计的时候就不同于传统的其他面向对象语言,是基于原型的继承机制,但是在这种机制下,继承依然有一些不同的实现方式. 方法一:类式继承 ...
- 【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)
问题描述: 客户端js连续发起两个异步http请求,请求地址相同,但参数不同:POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFu ...
- ASP.NET MVC中的错误-友好的处理方法
转自:http://blog.csdn.net/lizhao1226/article/details/6367400 “/”应用程序中的服务器错误. 无法找到资源. 说明: HTTP 404.您正在查 ...
- [linux]BASH 的基本语法
最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 最简单的例子 -- ...
- [Hibernate] - Annotations - One To Many
Hibernate使用Annotation的一对多: hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8&q ...
- DIV中的垂直居中
<div style="border:0px #ff0000 solid; width:100px;height:380px; line-height:380px; float:lef ...