mysql的事务
注意不开启mysql事务,数据库默认提交事务
关闭自动提交
start transaction;
insert into table_name(id,name,age) values (1,'zhangsan','123');
执行上边插入语句后你查询表是有数据的,如果执行rollback;数据就会回滚,
回滚事务
rollback;
执行上边插入语句后你查询表是有数据的,如果执行commit;数据就会提交,就会写入到磁盘上
提交事务
commit;
mysql事务四个特性
1、原子性
说明事务是最小的工作单元,不可再分;
2、一致性
所有事务要求,在同一个事务当中,所有操作必须同时成功,或者同时失败
3、隔离性
A事务和B事务之间具有一定的距离。
4、持久性
事务最终结束的一个保障,事务提交,就相当于将没有保存到硬盘上的数据保存到硬盘上。
mysql事务隔离级别
1、读未提交: read uncommitted; 级别最低 (没有提交就读到数据)
事务A可以读到事务B未提交的数据。
这种隔离级别出现的问题就是脏读现象(Dirty Read)
这种隔离级别一般都是理论上的,大多数的数据库隔离级别都是二档起步。
2、读已提交: read commit; (提交之后就读到数据)
事务A只能读到事务B提交之后的数据
这种就是解决了脏读现象
这种隔离级别存在不可重复读取数据
3、可重复读: repeatable read; (提交之后也读不到数据,永远读到的是刚开启事务的数据)
事务A开启之后,读到的数据3条,但是事务B把数据改了,事务A读到的数据还没有变化,这就是可重复读
可重复读存在的问题是可能出现数据幻影,不够真实
mysql默认隔离级别
4、序列化/串行化: serializable; 级别最高
这是最高隔离级别,效率最低,解决了所有的问题
这种隔离级别表示事务排队,不能并发
每一次读到的数据都是最真实的,并且效率也是最低的