专题-子项-1-mysql-深入理解Mysql锁与事务隔离级别

 

--------------锁与事务总结-------------

锁---innodb行锁(所以才支持事物)和MyISAM表锁(查自动加表读锁,写自动加表写锁--不适合写的业务)
innodb的事物有ACID特性;
其中I特性--事物隔离级别有4种,后三种可以解决3个事物并发问题:脏读、不可重读、幻读
mysql事物隔离级别默认是可重复读的原因---Mysql在5.0时读已提交主从复制有数据一致性问题,因为binlog只有statement格式。
可重复读的隔离级别原理----MVCC机制的快照读(RC是真实读)
可重复读的如何解决幻读问题----发挥其间隙锁机制(能解决幻读和主从复制不一致问题)----但会带来新的问题:间隙锁的范围锁多事物间并发容易死锁
mysql是默认的读已提交,建议mysql改或业务直接选读已提交的原因,有三----repeatable的间隙锁机制会使死锁的概率增、可重复读隔离级别下,条件列未命中索引会锁表、读已提交隔离级别下,引入半一致性读性能高;
读已提交解决主从复制不一致问题的方式---将binglog的格式修改为row格式,此时是基于行的复制

两个事物并发更新余额的情况:都先查后更新,查询余额都够扣一次,T1和T2交叉,T2后执行,余额再扣可能是负的;不用sql公式直接代码算好sql赋值也可能造成覆盖(数据不一致)
可重复读需结合---带公式减余额赋值,再带条件判断是否小于0;

你可能感兴趣的:(mysql,Mysql锁与事务隔离级别,重点)