mysql04-事务

为什么需要事务:

当多线程操作一组数据时,为保持数据一致性,提出了事务的概念

 

事务的特性:

原子性(atomicity)

事务视为不可分割的最小单位,要么都提交,不可部分提交

一致性(consistency)

数据从一种一致性转化成另一种一致性

持久性(durability)

一旦事务提交,数据永久保存到数据库中,

隔离性(isolation)

未提交

已提交 

可重复读

串行化

 

 事务并发问题:

脏读:事务A读了事务B更新后的数据,事务B回滚了;

不可重复度:事务A多次读取同一数据,事务B修改了这些数据,导致事务A多次夺取的值不一样

幻读:事务A修改了一批数据,在这个是时候事务b插入了一条数据,事务A完成后检查数据发线多了一条

 

其中已提交解决了脏读;

 

可重复读解决了不可重复读和幻读,通过间隙锁,间隙锁是左开又闭原则,具体看 https://www.jianshu.com/p/32904ee07e56

 

查看数据库是否支持事务:

show engines;

 

查看 mysql 当前默认的存储引擎?

show variables like '%storage_engine%';

 

查看某张表的存储引擎?

show create table 表名 ;

 

对于表的存储结构的修改?

建立 InnoDB 表:Create table .... type=InnoDB; Alter table table_name type=InnoDB;

 

事务的语法:

 

事务回滚 rollback

 

提交 commit

 

还原点

savepoint

show variables like '%autocommit%'; 自动提交事务是开启的

set autocommit=0;

insert into testdemo values(5,5,5);

savepoint s1;

insert into testdemo values(6,6,6);

savepoint s2;

insert into testdemo values(7,7,7);

savepoint s3;

select * from testdemo

rollback to savepoint s2

rollback

 

 

上一篇:MySQL的SQL语句 -事务性语句和锁定语句(3)- SAVEPOINT


下一篇:《Oracle MySQL编程自学与面试指南》13-03:事务保存点