• MySQL 锁原理


          

        读锁  :共享锁

        写锁 : 排他锁
        锁分为读锁和写锁,简单理解:对某一行数据加了读锁,其他的人可一来读这一条数据,而不能来更新这条数据,如果加了写锁,其他人既不能更新,也不能读取

        但是 两种锁都不能对 select  语句进行阻止,也就是说select  语句游离在锁之外

        普通的 select  语句不会加任何锁,  

        select  。。。。。。。。。。。。。 lock in share mode 会加上S锁

        

        隔离性不同的时候,事务之间的锁的影响也是不一样的

        读已提交   Read  Commited  隔离性下

        1.事务A 查询主键并且上X锁写锁,,事务B再次查询相同的条件并且上X锁写锁的时候,事务B会阻塞,但是查询其他的条件并不会阻塞

        2.事务A查询唯一索引的时候于上面主键的效果是一样的

        3.事务A查询普通索引并且上X锁写锁,所有查出来的行全部都加锁,事务B进行查询上锁会阻塞,前三个情况都是一样的

        4.没有索引的情况下,走全表扫描,也知识查询出来的结果才会上锁

        读已提交的级别下,就算上锁,也可以插入数据,但是可重复读的级别情况下是不能插入的,进行插入的事务会阻塞 ,避免了幻读的现象,如果插入的数据跟上锁的数据相邻,就会上锁,如果不相连就不会上锁

          相邻   举例:下图中,查询e为a 的行,插入a1,a1>a,所以会插入在a  和  b  中间,就会上锁,如果插入   2  ,就会插入在1 和 a 中间,就不会上锁

        最极端的情况下,在可重复的隔离级别下,查询某一字段并上锁,是不能修改任何一行数据的,因为比如查询 C =  1 ,当其他行的数据进行修改,将  C 的 值由  2  改为了  1 ,  下一次读取数据也会增加这一行,产生幻读的现象,所以为了避免幻读,就不允许进行修改

      

        

  • 相关阅读:
    fafu 1231 dp(线段树优化dp)
    OUTLOOK+VBA 备份邮件到GMAIL
    心灵的程序:佛学与计算机
    建议增加编辑器插件“自动排版”
    高效演讲:简单四步走
    找呀找呀找地铁
    为什么你总是烦?
    变形金刚之雷曼疯狂兔子:抽水马桶变身
    客观:别人的主观
    用VBSCRIPT朗读文本
  • 原文地址:https://www.cnblogs.com/2940500426yingxin/p/16027898.html
Copyright © 2020-2023  润新知