MySql事务的隔离级别及作用
逻辑工作单元遵循一系列(ACID)规则则称为事务。
原子性:保证事务是一系列的运作,如果中间过程有一个不成功则全部回滚,全部成功则成功。保证了事务的原则性。
一致性:一致性指的是比如A向B转100块钱,不可能A少了100,结果B却没得到100。要么A少钱B多钱,要么A不少,B不多。
隔离性:当一个事务在运行过程中,别的事务影响不到该事务,及此事务也不会影响别的事务,这称为隔离性。
持久性:保证数据成功之后是持久存在的,而不是像内存一样。
事务的隔离级别:
事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted) 是 是 是
不可重复读(read-committed) 否 是 是
可重复读(repeatable-read) 否 否 是
串行化(serializable) 否 否 否
相对来说这个顺序是:
1.最不安全,4.最安全
1.性能最高 4.性能最低
Mysql的默认级别是:repeatable-READ
Oracle的默认级别是:read-COMMITTED
设置隔离级别的两种写法:
1. SET GLOBAL TRANSACTION ISOLATION LEVEL 隔离级别
2. SET tx_isolation= 隔离级别
第一种方式不需要 ‘-’ 否则不会执行成功。 第二种方式必须有‘-’ ,否则不会执行成功
查看事务的隔离级别:
SELECT @@tx_isolation;