2019独角兽企业重金招聘Python工程师标准>>>

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

mysql锁机制分为表级锁和行级锁 myISAM 引擎不支持事物!

排他锁:

Set Autocommit=0; // 把事物设置成手动事物!

排他锁又称为写锁,简称X锁 排他锁就是不能与其他锁并存,如A事务获取了一行数据的排他锁,事务就不能再获取该行的其他锁 必须等A事物的排他锁结束才能对一行数据进行增删改! mysql InnoDB引擎默认的修改数据语句,update,delete,insert都会自动给涉及到的数据加上排他锁,select语句默认不会加任何锁类型,如果加排他锁可以使用select ...for update语句

实验1:

下图两个用户都设置了手动事物 实验证明 A 把数据删了 B还能查到 B也要进行commit 提交或者roll回滚才能看到修改后的数据!

实验2:

A事物还在执行 B事就对这行数据进行操作 B事物卡住在这里!

实验3:

A把sid=1的数据改成了2
然后b要把sid的数据改成5 结果失败了 原因是已经没有sid=1 这条数据了
早就被A修改成2了
如果B的条件是 把sid=2的数据修改成5 那就能操作成功了!

实验4:

A把查询出来的数据加上排他锁
B也对这条数据去加排他锁
然后卡住了
要等A执行commit提交 A的排他锁才能结束!

下图用工具测试:

排他锁 A用户已经把这个表用排他锁锁住了
B用户去修改数据 然后卡在这里
要等A用户执行Commit 提交 B用户才能执行

再看看下图 结果是10
因为A用户把sid改成10
B用户的条件是sid=1
没有此条数据 所以修改不上!

共享锁:

Lock in share mode

第一 共享锁不能与排他锁共存在!

第二 共享锁在自动事物的情况下不会发生冲突

第三 共享锁在手动事物的情况下会出现一系列问题!

第四 共享锁可以多个用户对同一条记录锁定!

实验1:

在手动事物的情况下 A先对这一行数据进行了排他锁 然后B用户又去对这行数据进行共享锁 死活不给B用户操作 要等A用户把这个事物处理完才能给B用户进行排他锁! 反之结果还是一样 排他锁和共享锁不能共存!

实验2:

在手动事物下 A和B 都对这一条数据加上共享锁了 然后A事务要修改 会处于等待状态 他在等B用户来操作 只要B一来操作 系统就会把B用户掐死掉 先来的成功执行 后来的直接被干掉

实验3:

A用户对sid=1记录共享锁锁定
B用户对Sid=2记录共享锁锁定
然后A用户去修改sid=2的记录 卡住在那里
等B来操作 B一来操作 B就完蛋了!
这个故事告诉我们 被干掉总是B用户!

Sqlyog实验

双方各锁了一条数据

A对B锁定的数据进行更改
A处于等待
B对A的数据进行改变
B用户的锁干掉了

最后两个人都把事物提交或者回滚
就能查询出真实数据了!

后执行的遭殃 直接被干掉了!

转载于:https://my.oschina.net/kaige123/blog/1526942

-mysql-锁机制分为表级锁和行级锁相关推荐

  1. Mysql的锁机制之表锁

    Mysql的锁机制之表锁 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除传统的计算资源(如CPU,RAM,I/O等)的争用外,数据也是一种供许多用户共享的资源,如何保证数据并发访 ...

  2. mysql数据库的行级锁有几种_MySQL中的行级锁、表级锁、页级锁

    在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM ...

  3. mysql三锁,mysql锁机制之表锁(三)

    顾名思义,表锁就是一锁锁一整张表,在表被锁定期间,其他事务不能对该表进行操作,必须等当前表的锁被释放后才能进行操作.表锁响应的是非索引字段,即全表扫描,全表扫描时锁定整张表,sql语句可以通过执行计划 ...

  4. 行级共享锁和行级排他锁_Power BI中的行级安全性简介

    行级共享锁和行级排他锁 Analyzing data with Power BI has always been fascinating to me. With ever-growing data c ...

  5. mysql中什么是表?列?行?什么是主键和外键?什么是索引?为什么要使用索引?

    mysql中什么是表?列?行? 在关系数据库中,表(Table)是数据的主要组织单元.它是由一组命名的列和行组成,用于存储和组织数据. 列(Column)是表中的一个字段,用于存储特定类型的数据.每个 ...

  6. html中哪个属性表示块级元素,HTML块级元素与行级元素

    转自:http://gkecenter.blog.163.com/blog/static/181380305201291745234195/ 一.两种类型 HTML中的大部分元素都可分为两种类型:块级 ...

  7. css块级元素与行级元素

    看先下效果图 代码 <!DOCTYPE html> <html><head><meta charset="UTF-8"><ti ...

  8. mysql 锁机制及实现原理_MySQL-深入浅出锁分类及实现原理

    个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 背景 数据库是一个多用户并发使用的共享资源.当多个并发读写数据时,在数据库中就会产生多个事务同时读写同一数据的情况. 若对并发操作不加控制就可能会 ...

  9. Mysql存储引擎Innodb的读写锁、行级锁

    读写锁 Mysql存储引擎Innodb在处理并发读或者写的时候,通过两种类型的锁来解决并发问题,这两种锁通常称为共享锁和排他锁,也叫读锁和写锁. 读锁是共享的,即多个客户端可以同时读取同一资源. 写锁 ...

最新文章

  1. 解决ASP.NET网站发布问题
  2. python3.7 6如何安装-深度linux安装Python3.7.6
  3. libqrencode生成二维码图片的问题
  4. 对2014年,关于轻应用的五大预言
  5. Python 模块之 time datetime
  6. linux编码 form表单,Linux以form表单形式上传文件讲解
  7. CCIE-LAB-第八篇-OSPF前缀压制+MTU+路由汇总
  8. phpcms9.6 ueditor_Phpcms v9深度整合百度编辑器Ueditor
  9. 【pycharm】pycharm上安装tensorflow,报错:AttributeError: module ‘pip‘ has no attribute ‘main‘ 解决方法
  10. struts2 返回html文本,Struts2 s:textfield文本示例
  11. 杭州有那些APP外包公司?
  12. 手机能上wifi电脑不行_电脑如何当Wifi供手机使用
  13. win8计算机配置怎么看,win8怎么看电脑配置?win8电脑配置的查看方法
  14. Android四大组件 之一 广播接收者
  15. 轻松一刻,python乌龟绘图-小猪佩奇,可爱乌龟,新冠病毒
  16. 找出唯一出现一次的数
  17. 密码学 SM3算法 Python实现
  18. 我的团长我的团第三集
  19. C++中的delete——读书笔记
  20. 练习一万小时;2000-5000 小时计划和建议;现在开始!---读《异类》后刚好遇到的一篇文章

热门文章

  1. java中gradlew 命令_gradle命令学习
  2. php yii把pdf转成图片,yii实现图片上传及缩略图生成的方法
  3. html淡化效果,jQuery实现基本淡入淡出效果的方法详解
  4. 服务器安全证书更新失败怎么回事,手机安全证书更新失败怎么回事
  5. leetcode412. Fizz Buzz
  6. leetcode162. 寻找峰值 变种二分见过吗
  7. PaperNotes(17)-图卷积神经网络GCN-笔记
  8. 机器学习问题总结(04)
  9. 《Python Cookbook 3rd》笔记(1.11):命名切片
  10. 用Python将多张图片合并成一PDF文件