事务隔离级别是为了解决多个并行事务竞争导致的数据安全问题的一种规范,具体来说,多个事务竞争可能会产生三种不同的一个现象,脏读、不可重复读、幻读的数据安全问题。
读未提交,在这种隔离级别下,可能会产生脏读、不可重复读、幻读。
读已提交,在这种隔离级别下,可能会产生不可重复读和幻读
可重复读,在这种隔离级别下,可能会产生幻读。
在这种隔离级别下,多个并行事务串行化执行,不会产生安全性能问题。
注意,串行化没有安全问题,但是性能最差,读未提交安全性能问题大,但是性能最好。
mysql默认的隔离级别为可重复读,因为它需要保障事务ACID特性的隔离性。
select @@transaction_isolation;
设置读未提交
set session transaction isolation level read uncommitted;
设置读已提交
set session transaction isolation level read committed;
可重复读
set session transaction isolation level repeatable read ;
串行化
set session transaction isolation level serializable;