事务操作:
概念:一个包含多个步骤的业务操作,被事务管理,这些操作要么同时成功要么同时失败。
start transaction;开启事务操作
rollback;事务回滚,即数据回到初始状态。
commit;提交事务。
在MySQL中事务会自动提交。
Oracle是手动提交。
set @autocommit :off; 关闭MySQL自动提交事务。
事务的四大特征:
1,原子性:是不可分割的最小操作单位。
2,持久性:当事务提交或者回滚之后,数据库会持久的保存数据。
3,隔离性:各个事务之间保持独立性。
4,一致性:事务操作前后,数据总量不变。
事务的隔离级别:
多个事务之间是隔离的,相互独立的,但是多个事务操作同一批数据时则会引发问题
设置不同的级别可以解决不同的问题。
可能发生的问题;
1,脏读;一个事务,读取到另一个事务没有提交的数据。
2,虚读(不可重复读);同一事务中,两次读取的数据不一样。
3,幻读。
级别:
1.read uncommitted:读为提交。上面的问题都有可能发生。
2.read committed: 读已提交。 幻读,虚读。
3.repeatable read: MySQL默认的级别,幻读。。
4.serializable 串行化 。解决所有问题。
从上往下安全级别越来越高,效率越来越低。