3. MySQL 事物隔离级别及读写锁

时间:2021-02-22 12:47:48   收藏:0   阅读:0

一 MySQL 事务隔离级别

  1. 读未提交(READ UNCOMMITTED):一个事务可以读到其他事务没有提交的数据,会出现脏读、不可重复读、幻读
  2. 读已提交(READ COMMITTED):一个事务只能读到另一个已提交的数据修改过的数据,并且其他事务没队该数据进行一次修改并提交后,该事务都能查询到最新值,会出现不可重复读、幻读
  3. 可重复读(REPEATABLE READ):一个事务第一次读过某条记录后,即使其他事务修改了该记录的值,该事务之后再读该条记录时,读到的仍是第一次读到的值,而不是每次都读到不同的数据,这就是可重复读,这种级别仍然会出现幻读,这也是 MySQL默认的隔离级别
  4. 串行化(SERIALIZABLE):同一时间段内对相同记录只能有一个事务进行读/写,其他的读/写都会被阻塞,读-写是相互互斥的,所以不会出现脏读、不可重复读、幻读等现象

 

二 MySQL 隔离级别的操作

-- 修改隔离级别
mysql> set session transaction isolation level read uncommitted;
-- 查看隔离级别
mysql> select @@tx_isolation;

 

三 读锁与写锁

 读写锁总结:读读共享、读写冲突、写写冲突

 读操作

-- 不加任何锁
select ...;

-- 加读锁方式
select ... lock in share mode;

-- 加写锁方式
select ... for update;

 写操作

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!