mysql的锁总结

表锁

行锁 :记录锁(record lock)、间隙锁(gap lock)、临间锁(next-key lock)    修改update:直接上锁 。查询select:写锁末尾用for update  , 读锁末尾lock in share mode

行锁是加在索引上的,没有索引是加不上行锁的

 

读锁(共享锁、S锁):多个事务同时读,不能写

写锁(排他锁、互斥锁、X锁):一个事务能写能读,其他的事务都不行

mdl(meta data lock、元数据锁):查询事务一旦开始,不能修改表结构

意向锁:表锁,获取锁前先要获取意向锁,不能修改表结构。   一、意向共享锁(IS) 是指在给一个数据行加共享锁前必须获取该表的意向共享锁。 二、意向排它锁(IX) 是指在给一个数据行加排他锁前必须获取该表的意向排他锁。

 

乐观锁:无锁   version来控制

悲观锁:mysql都是悲观锁  上锁

 

 

Redo log

当我们想要修改DB上某一行数据的时候,
InnoDB是把数据从磁盘读取到内存的缓冲池上进行修改。数据在内存中被修改,与磁盘中相比就存在
了差异,我们称这种有差异的数据为脏页。InnoDB对脏页的处理不是每次生成脏页就将脏页刷新回磁
盘,这样会产生海量的IO操作,严重影响InnoDB的处理性能。

redo log的工作原理。说白了,redo log就是存储了数据被修改后的值。当我们
提交一个事务时,InnoDB会先去把要修改的数据写入日志,然后再去修改缓冲池里面的真正数据页。

 

posted on 2022-03-12 09:15  飘来荡去evo  阅读(61)  评论(0编辑  收藏  举报

导航