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
 
 
原文地址:https://www.cnblogs.com/xiaoshahai/p/14106195.html