mysql cmd 事务 用不了_MySql cmd下的学习笔记 —— 引擎和事务(engine,transaction)...

engine 引擎就是MySQL存储数据的不同方式

myisam 插入速度快 支持全文索引

innoDB 插入速度慢 支持事务安全

假设两人同时购买火车票,两人同时看到只有一张火车票,几乎同时下单

在银行转账时,张三转李四500元,两边必须都完成,转账才算完成,

张三少钱和李四多钱必须一致的,这个两个操作必须同时成功或同时失败,不能一个成功,而另一个失败

需要用到事物

建立两张完全一样的表,但是引擎不一样

60a79744f0b5ca88cbce0a57a6be5b91.png

e029360dd51d0f0dff2f076a92eb48be.png

各插入两条数据:

mysql> insert intoa1-> values

-> ('zhangsan', 2000),->()->

->\c

mysql> insert intoa1-> values

-> ('张三', 3000),-> ('李四', 2000);

Query OK,2 rows affected (0.00sec)

Records:2 Duplicates: 0 Warnings: 0mysql> insert intoa2-> values

-> ('张三', 3000),-> ('李四', 2000);

Query OK,2 rows affected (0.07sec)

Records:2 Duplicates: 0 Warnings: 0

63f5480f2632bf051ec0f261a707c323.png

开启事务:

a658e18ad6c3b745aaaa7462f2637c11.png

5ae72bfd8a1a75f75cf4b6d4936595de.png

b3ca7aaf0828ff1c22c6f77007681dc1.png

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

66df7ed14d95ed162a71d4a879b2c7ab.png

7a19f21e27f10974762140e221a1b7f4.png

当两步都完成时,这个事物才算完成

提交整个事务

4808f57438d694c0dc4699cdb7c9bd17.png

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

3685f40dd2dda59dec3a788abe8624bc.png

(之前的操作并没有任何特殊的地方,只是‘张三’转了1000给‘李四’,下面的操作才说明了

事务的一个特性【原子性】)

我们第二次再开启事务

f1588ac99ccae12bba0f1727d93fccfa.png

这次要再给李四1000元

962d6f85b8e50fe7c0fa2c5f4bcd5626.png

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

但张三的钱已经少了1000

6174e3250802424de55221f3a354f251.png

那么‘张三’的钱还能不能回来呢?

答:可以!!!

685c25a7cd1b44984a5352c46099aff8.png

4de63f8b36e5c4e4e7f612fa2de5cb33.png

张三的钱就《回滚》了

用黑色窗口和蓝色窗口来说明事务的隔离性

开启事务

ce9663df4386baa35e086099ac159ae5.png

89a3572fc0983c5d3443daa702858b8c.png

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

9d519b9f4469df48223f01ed5b235101.png

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

数据是不会变的

81b18d705cbb50ea2da2727ff7966629.png

97295c60dabc95fba0a661c6230a1028.png

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

ae2400c29e9ff1305e7626ce10b06412.png

b571a17829e08071ccd3f959c82aafd5.png

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

0ff3d6ed951ad0f66069f333ce5877a2.png

a706bc26f7e174856463d1489bbd6df0.png

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

b288cf585c7c507e0daa6082e28ae53e.png

事务的特性

原子性:2步或n步,要不都成功,要不都不成功

一致性:在转钱时,一个人加500, 而另一边没500块,那么这个操作就不能实现

隔离性:事务结束前,每一步带来的影响,别人都看不见

持久性:事务一旦完成,无法撤销

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值