首页 > 数据库技术 > 详细

mysql引擎与事务

时间:2019-05-24 13:25:48      阅读:102      评论:0      收藏:0      [点我收藏+]

mysql 引擎

存储一份文件,

不管用什么存储方式,不变的数据,变化的时存储的格式

 

总结:engine引擎就是Mysql存储数据的不同方式

就像一部电影,内容一样

avi,mp3,mkv。。。就是不同的engine

 

create table(

)engine myisam charset utf8;

 

存储引擎与其特点:

        myisam         innodb

批量出入的速度       高                      低

事务安全          否      支持

锁机制      表锁     行锁

 

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

create table v1(

uname varchar(20),

money int 

)engine myisam charset utf8;

 

create table v2(

uname varchar(20),

money int 

)engine innodb charset utf8;

 

两张表在存储数据上是一样的

 

举例:

1.如果多人买火车票,用两个窗口来模拟,2个人在购买,

只有一张票,几乎同时查询,

两人同时下单购买

 

2.银行转账

张三给李四转500块,

张三-500,李四+500

这两部必须都完成了,转账才完成

 

像这种,2步或n步,从逻辑上讲,是一个“原子操作”

即,要么成功,要么不成功

如何保障这种特性?

 

答:事务

事务特性:

1。原子性:2步或n步操作,逻辑上不可分割,

通俗说:要么成功,要么都不成功

 

演示事务的原子性:

如何使用事务呢?

start transaction 开启事务

张三加500,李四减500

两步完成了,事务完成了,

提交这个事务:commit

 

事务的体现呢?

再次开启事务,体现事务的原子特性

张三加500,

接下来扣李四500失败了,

部分失败,则之前的成功操作怎么处理?

答:回滚。rollback

此时张三的钱变回初始值

 

2.一致性:

指操作前后,值的变化,逻辑上成立

 

3.隔离性:

事务结束前,操作的每一步所带来的影响,别的会话都不可见

commit指令输入后才代表事务结束

 

4.持久性

事务一旦完成,无法撤销

比如:ATM取钱

账户-500

吐钞500,钱装兜里,

这时 ,出错了,如何撤销这个事务?

答:事务不能撤销,但确实是一次错误的交易,怎么办?

只能在错一次“补偿事务”,即如果多吐了500,只能从你的账户在扣除500 

 

mysql引擎与事务

原文:https://www.cnblogs.com/fbjtcp/p/10917438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!