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
原文:https://www.cnblogs.com/fbjtcp/p/10917438.html