MySql中只有INNODB引擎支持事务处理机制。
MySql中默认的是关闭事务。也可以理解为将每条DML语句都封装为一个事务,自动提交。
手动开启事务:可以设置set autocommit = 0,这会导致在一个Session中均开启事务。
satrt tramsaction或者begin,临时性开启事务。也就是开启一次。
commit为提交事务。rollback为回滚。均会关闭临时开启的事务。
针对并发事务导致的:脏读、幻读以及不可重复读等问题,大多数数据库都有事务隔离机制来应对。
事务隔离级别分为4个:
1:读未提交read-uncommitted。此级别对问题无法处理。
2:读已提交read-committed。可处理脏读的问题。
3:可重复读repeatable-read。可处理脏读和不可重复读的问题。
4:串行化serializable。可处理所有问题。
当然,级别越高意味着处理起来越麻烦,性能越低。
MySql中有两条语句对事务隔离级别进行操作:
select @@tx_isolation:查询隔离级别
set session transaction isolation level xxx:设置当前session会话的事务隔离级别。