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行格式 ...
随机推荐
- ubuntu下nfs服务器的安装与配置
nfs服务器的安装和配置 1.安装nfs 服务器,前提是你的系统能连上网. 2.设置/etc/exports配置文件 (1) 进入/etc/exports配置文件 (2) 在最后一行加入红色那行,/h ...
- 查看jquery绑定的事件函数
作为技术狂热分子的职业本能,看到一个技术产品的功能,总会忍不住想知道它是怎么被实现的.比如我每每看到别人网站一个很炫的界面或者很酷的功能,就忍不住打开了浏览器的控制台... 好,不扯远,说说当你想看到 ...
- C#的委托 Action<>和Func<>
其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: [csharp] public delegate vo ...
- maxscript,MAXScript Listener下输入print "hi"为什么输出两次
第一次是print "hi"的输出,第二次是print "hi" 的返回值被输出. 参考:https://davewortley.wordpress.com/2 ...
- C#的浅拷贝和深拷贝
C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量 对于值类型变量,深拷贝和前拷贝都是通过赋值操作符号(=)实现,其效果一致,将对象中的值类型的字段拷贝到新的对象中.这个很容易理解. 本文重 ...
- 用c#读取文件内容中文是乱码的解决方法:
用c#读取文件内容中文是乱码的解决方法: //方法1: StreamReader din = new StreamReader(@"C:\1.txt", System.Text.E ...
- C/C++ 函数压栈方式
一,不同关键字,系统压栈方式 1,如果函数func是__cdecl(VC下的默认调用方式),调用时情况如下 int main() { //参数从右到左压栈 push 4 pus ...
- 使用Lucene.Net实现全文检索
使用Lucene.Net实现全文检索 目录 一 Lucene.Net概述 二 分词 三 索引 四 搜索 五 实践中的问题 一 Lucene.Net概述 Lucene.Net是一个C#开发的开源全文索引 ...
- Python Beautiful Soup模块的安装
以安装Beautifulsoup4为例: 1.到网站上下载:http://www.crummy.com/software/BeautifulSoup/bs4/download/ 2.解压文件到C:\P ...
- DHCP协议讲解
一.DHCP服务介绍: DHCP为动态主机配置协议,该协议能自动配置主机的IP地址.子网掩码.网关及DNS服务器等TCP/IP信息.DHCP可以降低客户机IP地址配置的复杂度和网络管理成本. DHCP ...