mysql锁总结

概述:锁是在并发访问时,解决数据的有效性、一致性问题,有全局锁、表级锁、行级锁,锁粒度越小越好。

全局锁:是对整个数据库实例加锁,一旦对整个数据库实例加了锁,那么就意味着这个数据库的实例处于只读状态,是不能够进行写入操作的,其他所有的写入操作都会处于阻塞状态,

性能比较差,主要是用着数据的逻辑备份。如果觉得数据备份加全局锁的成功比较高,那也可以通过一个参数,single transaction,通过这个参数解决数据备份时的一致性问题。

表级锁:锁住整张表,锁的粒度大,发生锁冲突的概率也比较高。分为:表锁、元数据锁、意向锁。

表锁时,我们可以对整张表加读锁和写锁,把整张表锁住。而元数据锁它主要的目的是为了避免我们执行DML语句和DDL语句时候冲突的情况。意向锁的目的是规避行锁和表锁在加锁时的冲突问题,表锁在加锁的时候会逐行的查这张表的行锁情况,而

对于意向锁我们不用手动去加锁,它会自动加上对应的意向锁。

行级锁:锁住的是对应的行数据。锁的粒度是最小的,发生锁冲突的概率也是最低的,分为:行锁、间隙锁、临建锁。

行锁顾名思义锁的就是具体的行,而在行锁当中,共享锁和共享锁之间可以兼容,共享锁与排他锁是互斥的,排他锁与排他锁都是互斥的,间隙锁,锁住的是两条记录之间的间隙,临键锁它锁的是记录和间隙,简单理解为,临键锁就是行锁和间隙锁的组合。

那么间隙锁的出现主要是为了避免,我们多个事务并发操作时出现幻读现象。  

posted @ 2023-03-10 20:02  xycccode  阅读(16)  评论(0编辑  收藏  举报