MySql cmd下的学习笔记 —— 引擎和事务(engine,transaction)
engine 引擎就是MySQL存储数据的不同方式
myisam 插入速度快 支持全文索引
innoDB 插入速度慢 支持事务安全
假设两人同时购买火车票,两人同时看到只有一张火车票,几乎同时下单
或
在银行转账时,张三转李四500元,两边必须都完成,转账才算完成,
张三少钱和李四多钱必须一致的,这个两个操作必须同时成功或同时失败,不能一个成功,而另一个失败
需要用到事务
建立两张完全一样的表,但是引擎不一样


各插入两条数据:
mysql> insert into a1
-> values
-> ('zhangsan', 2000),
-> ()
->
-> \c
mysql> insert into a1
-> values
-> ('张三', 3000),
-> ('李四', 2000);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into a2
-> values
-> ('张三', 3000),
-> ('李四', 2000);
Query OK, 2 rows affected (0.07 sec)
Records: 2 Duplicates: 0 Warnings: 0

开启事务:



在两个窗口同时打开a2表(蓝色为第二个窗口)


当两步都完成时,这个事物才算完成
提交整个事务

在另一个窗口下可以也可以显示出结果

(之前的操作并没有任何特殊的地方,只是‘张三’转了1000给‘李四’,下面的操作才说明了
事务的一个特性【原子性】)
我们第二次再开启事务

这次要再给李四1000元

但因为网络故障,李四没收到钱,整体的转账操作,从逻辑上讲,张三白少了1000元
但张三的钱已经少了1000

那么‘张三’的钱还能不能回来呢?
答:可以!!!


张三的钱就《回滚》了
用黑色窗口和蓝色窗口来说明事务的隔离性
开启事务


在存进1000元时,如果在不按确定时,把刚存的钱取出,再按取消键,那么自己的刚存的钱是否会退出来呢

可以看出来,张三的钱并没有增加,说明了只要事务没有结束,从其他的方式询问该表,
数据是不会变的


只有当事务完成后,用其他方式访问该数据库才会显示结果


但在a1表实现刚才的操作就不会有效果(a1 engine myisam | a2 engine innodb)


可以看出,即使a1表没有停止事务,a1表增加的钱在其他窗口也能看见

事务的特性
原子性:2步或n步,要不都成功,要不都不成功
一致性:在转钱时,一个人加500, 而另一边没500块,那么这个操作就不能实现
隔离性:事务结束前,每一步带来的影响,别人都看不见
持久性:事务一旦完成,无法撤销
MySql cmd下的学习笔记 —— 引擎和事务(engine,transaction)的更多相关文章
- MySql cmd下的学习笔记 —— 有关多表查询的操作(多表查询练习题及union操作)
先建立一张 m 表 mysql> create table m ( -> mid int, -> hid int, -> gid int, ), -> matime da ...
- MySql cmd下的学习笔记 —— 有关select的操作(in, and, where, like等等)
为方便本节学习, 请先自行建立本表: 建一个商品表: create table goods ( -> goods_id mediumint(8) unsigned not null auto_i ...
- MySql cmd下的学习笔记 —— 有关修饰器的知识(trigger)
关于触发器的理解: 进行数据库应用软件的开发时,有时我们碰到表的某些数据的改变时,希望同时 引起其他相关数据改变的需求,利用触发器就能满足这样的需求. 触发器能在表中的某些特定数据变化时自动完成某些查 ...
- MySql cmd下的学习笔记 —— 有关视图的操作(algorithm)
建立一张简单的查询视图,不用临时表,只用条件合并 在简单的查询中,建立临时表的开销比较大 这是可以指定algorithm选项为merge 在v2的视图中,并没有建立临时表 但在下列情况下,必须建立临时 ...
- MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)
先找到goods表 查询goods_id最大的商品 where型的子查询 查询goods_id最大的商品(不能用排序) 把两步写成一步,就是子查询 from型子查询 查找出每种cat_id下goods ...
- MySql cmd下的学习笔记 —— 有关分组的操作(group by)
(一) 把建立的goods表找到 (二) 当cat_id = 3时,计算所有商品的库存量之和 计算每个cat_id下的库存量(group by) 需要用到分组,把每个红框内的计算在一起 筛选出本店价比 ...
- MySql cmd下的学习笔记 —— 有关select的操作(max, min等常见函数)
先把之前建的goods表找到 找到最贵的本店价(max) 找到最便宜的本店价(min) 查出一共还有多少商品(count) 查看商品价的平均价(avg) 查看本店有多少种商品 当count(*)时 输 ...
- MySql cmd下的学习笔记 —— 有关建立表的操作(有关于数据类型)
(01)建表的过程实际上是 声明字段 的过程 一. 列类型(字段): 存储同样的数据时,不同的列类型,所占据的空间和效率是不一样的,这就是建表时要考虑的意义. 二.MySQL三大列类型 数值型 ...
- MySql cmd下的学习笔记 —— 有关表的操作(对表中数据的增,删,改,查)
(知识回顾) 连接数据库 mysql -uroot -p111 先建立一个新库 create database test1; use test1; 由于今天的主要内容是表的操作,建立表的详细过程不是本 ...
随机推荐
- 1.1实战项目:电影周周看V1(初识小程序)
第一小程序的实战项目: 覆盖的小程序技术: 讲解方式: 学习方法:
- BZOJ2157 边转点 树链剖分
https://www.lydsy.com/JudgeOnline/problem.php?id=2157 现在就是后悔,非常后悔 本来想随便拿个树剖热身,不料开了个毒瘤题. 题意:动态维护一棵树上的 ...
- Flink HA 搭建坑
目前网上能找到的做HA的教程基本都无法真正做到多机高可用,包括官方文档,经过很久的折腾,终于做到了多机高可用,希望其它人不再被坑. 集群模式安装 前提条件: 机器已经安装好Java环境 jobMana ...
- ntp 时间同步
NTP 是网络时间协议(Network Time Protocol)的简称,通过 udp 123 端口进行网络时钟同步 一.安装 # 既可做服务端也可做客户端 yum install -y ntp # ...
- EJB到底是什么
EJB到底是什么? 1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业 ...
- Lost connection to MySQL server during query,MySQL设置session,global变量及网络IO与索引
Navicat导出百万级数据时,报错:2013 - Lost connection to MySQL server during query 网上一番搜索,修改mysql如下几处配置文件即可: sel ...
- 【leetcode-51,52】 N皇后,N皇后 II
N皇后(hard) n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题 ...
- http.lua里的装饰器
摘自:http.lua local co_yield = coroutine.yield local co_create = coroutine.create local co_status = co ...
- 使用keytool自建证书及应用
1. 在密钥库文件 keystore.jks 中生成证书: keytool -genkey -alias cas -keyalg RSA -keypass changeit -storepass ch ...
- Could not find default endpoint element that references contract 'wcfXXXXXXXXXXX' in the ServiceMode
Service本身没有问题,但是调用的时候,只在DataAccessSilverlight里引用了,而在主工程WebGISDemo里没有引用服务PowerDataServiceReference,所以 ...