美文网首页
mysql 事务隔离

mysql 事务隔离

作者: jojo1313 | 来源:发表于2019-12-06 15:25 被阅读0次

    参考:http://www.zsythink.net/archives/1233/

    Mysql Innodb 事务隔离级别
    事务符合ACID要求,满足原子性,一致性,持久性,隔离性(通过锁机制满足)
    事务隔离级别从低到高有4种
    1.Read-uncommittted 读未提交
    2.Read-committed 读提交
    3.Repeatable-read 可重复读 (mysql 默认配置)
    4.Serializable 串行化

    Read-uncommittted 读未提交:
    特性:同时begin开启两个客户端两个事务,第1个客户端update,未commit,第2个客户端select可以马上看到修改,这种现象叫“脏读”,并发性能最强,但隔离性和安全性最差。

    Read-committed 读提交:
    特性:也会出现“不可重读”,“幻读”的问题,但是并发能力比可重读更强。

    Repeatable-read 可重复读:
    特性:同时begin开启两个客户端两个事务,第1个客户端update,未commit,第2个客户端select查询的结果是修改之前的,之后commit结束后才可查询到第1个客户端修改后的值
    原因:innodb采用了“一致性非锁定读”机制,提高了并发性,什么是“一致性非锁定读”?如果在当前施加排他锁同时需要读行数据,不会等待行上锁释放。
    幻读:同时开启两个客户端两个事务begin,第1个客户端insert 1条数据,commit,第2个客户端select查询的结果是修改之前的,当第2个客户端update set全表再select时,会看到第1个客户端刚刚insert的数据,相同sql select多次,莫名其妙多1条或减少1条是“幻读“,莫名被修改现象叫“不可重读”。

    Serializable 串行化:
    特性:同时begin开启两个客户端两个事务,第1个客户端insert,,第2个客户端select会超时,只有当第1个客户端commit时,第2个客户端才会有结果,所以不会有幻读问题。
    缺点:隔离级别过于严格,数据库失去并发能力,很少使用。

    相关文章

      网友评论

          本文标题:mysql 事务隔离

          本文链接:https://www.haomeiwen.com/subject/xaisgctx.html