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

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

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

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

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

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

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

需要用到事务

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

3eaab963fa48bd06d02b16bd9401d0c6.png

6db1697cd17e6f02cf72bce53e4f50c9.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

b5bd00cfaa67cfff1c2bc9489a8a97b4.png

开启事务:

cef976eb596302c551cbd2f8b2cf78d4.png

878a6ccf51590c3d031e7ea35abc0482.png

da5bc0ef1aed77f67c4dc84e7307bda4.png

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

4c5f92ce51c8f764542a03cddc9de12d.png

88d8c9c7701e47bd0643cb25d814feaf.png

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

提交整个事务

aef9a43918ca81c936d4c2f8f89ced31.png

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

fb071f7253e08c634997a2f3e3ece984.png

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

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

我们第二次再开启事务

a53cb9c218c931aecb2026074f6d6268.png

这次要再给李四1000元

8b31d11869d9ef07067d7512dd15d8a4.png

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

但张三的钱已经少了1000

783e677e6f8cb97ef5a6c7dd124ff993.png

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

答:可以!!!

6a459f93a3f9fcfc17022e4126dcc6db.png

5f616f2772b44a6ac93dedd5a916afd7.png

张三的钱就《回滚》了

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

开启事务

b80327c9a27fc35bce64427f11710303.png

b81671fd78ce70f0ccf3074738614eee.png

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

85ec33e7f49d09cd8d49e8a7708b81a2.png

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

数据是不会变的

dfdc8b5532adee624e8d46b3ac142f7e.png

1f4928264a09e1afbadfb3c50a5dda2d.png

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

0a63c2e2e6621ccfcf775744cbc68052.png

3c966de9483d95c42d1918aa138f86e9.png

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

9fc8342dd2698263efd3968ec946aaf0.png

22335d21c349b656128019af7f7ad21a.png

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

b288cf585c7c507e0daa6082e28ae53e.png

事务的特性

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值