创建一个存储过程 在存储过程中  先查询  一个表  for  update

见代码:

DELIMITER $$

DROP PROCEDURE IF EXISTS test_sp1 $$

CREATE PROCEDURE test_sp1( )

BEGIN

DECLARE t_error INTEGER DEFAULT 0;

DECLARE COUNT INT DEFAULT 0;

DECLARE SUM INT DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;

START TRANSACTION;

SELECT * FROM srv_my_service WHERE id =1 FOR UPDATE;

WHILE COUNT < 100000000 DO

SET SUM = SUM + COUNT;

SET COUNT = COUNT + 1;

END WHILE;

SELECT SUM;

IF t_error = 1 THEN

ROLLBACK;

ELSE

COMMIT;

END IF;

SELECT t_error;

END$$

新打开一个窗口 ,执行查询

SELECT * FROM srv_my_service WHERE id =1 FOR UPDATE;

执行此语句,将一直处于等待状态

原因是上一存储过程先执行查询  使用for update 占用X锁,在事务没有提交的情况下,新的窗口使用 for update 查询则一个处于阻塞等待

因为上一存储过程一直没有释放X锁.

执行下面的语句,可以正常执行.

SELECT * FROM srv_my_service WHERE id =2 FOR UPDATE;

说明mysql 此时使用行锁,

执行下面的语句

SELECT * FROM srv_my_service FOR UPDATE;

任然阻塞等待

同理,执行如下语句仍然的带上面的结果

UPDATE srv_my_service SET srv_no ='323345454523434' WHERE id = 2

UPDATE srv_my_service SET srv_no ='323345454523434'

UPDATE srv_my_service SET srv_no ='323345454523434' WHERE id = 1

mysql悲观锁测试_测试一个mysql 悲观锁相关推荐

  1. mysql视频教程特密码_分享一个MySQL 密码增强插件

    介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...

  2. mysql的覆盖语句_求教一个mysql查询问题:为什么我的SQL语句不能覆盖所有情况?内详...

    mysql 查询 select count(*) from t1 where col1 > 0 339074条 select count(*) from t1 where col1 > 0 ...

  3. mysql死锁 简单例子_写一个Mysql死锁的例子

    创建表 CREATE TABLE `test1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, PRIMAR ...

  4. 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?

    测试工程师在测试软件的过程中,流程往往是先接口测试,接着就是功能性测试.在做功能性测试的时候,往往有这么一个工作场景,就是出现错误后,我们怎么快速排除数据库报错. 举例某个电商网站,当我们文本框中输入 ...

  5. mysql共享锁使用方法_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景...

    Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |-- ...

  6. mysql事务处理是悲观锁还是_数据库事务的悲观锁和乐观锁

    转载出处:http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数 ...

  7. mysql begin end 用法_数据库:Mysql中“select ... for update”排他锁分析

    作者:志波同学来源:https://mp.weixin.qq.com/s/8uH-7TD9ZRG4NCya80mOHg Mysql InnoDB 排他锁 用法:select - for update; ...

  8. mysql索引列是锁表还是锁行_[转]关于MYSQL Innodb 锁行还是锁表

    关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况.为什么呢?先看一下这篇文章. 做项目时由于业务逻辑的需要,必须 ...

  9. 织梦mysql占用资源_解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记

    早上帮朋友一台服务器解决了Mysql cpu 占用 100%的问题.稍整理了一下: 朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysq ...

  10. mysql 行锁 超时_技术分享 | MySQL 行锁超时排查方法优化

    作者:xuty 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 一.大纲 #### 20191219 10:10:10,234 | com.ali ...

最新文章

  1. 如何正确拒绝老板的加班要求?学起来!
  2. mysql登录服务器报错_mysql登录服务器报错
  3. springboot+jpa+mybatis 多数据源支持
  4. linux boost内存池,C++ boost库教程之内存池
  5. /etc/rc.local——开机自启配置文件
  6. PC端动态视频背景引导页(非自适应)
  7. SQL Server外连接、内连接、交叉连接
  8. 联通实时计算平台演进与实践
  9. nodejs cluster_认识node核心模块--全局对象及Cluster
  10. ActivityMq的使用(小例子)
  11. 记录服务磁盘满了清理记录
  12. 微信 PC(电脑端) 多开批处理
  13. 怎么进入华为路由器终端管理系统
  14. html和linux下目录路径中 杠,点杠,点点杠区别
  15. android 单元布局,在Android布局中挖洞
  16. 苹果开放降级_苹果新系统上线,只为M1芯片?
  17. csgo跳投指令_CSGO控制台进阶指令
  18. 周金涛:繁荣的起点并非沸腾的年代,或将在2020年出现首次证券市场大繁荣
  19. 详细到吐血 —— 树莓派驱动开发入门:从读懂框架到自己写驱动
  20. android支付宝运动修改器,支付宝运动步数修改器下载-无需root刷支付宝运动步数工具下载_飞翔下载...

热门文章

  1. 你竟然是这样的端智能?
  2. 直播类app开发的开屏广告是怎样实现的
  3. Android中的Serializable和Parcelable序列化
  4. C#WinForm多行文本框
  5. 4.python蓝桥杯模拟题 一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边)
  6. 玩转南海之滨 广东自助游线路全攻略
  7. 7天人工智能训练营,带你玩转机器学习与神经网络算法!(含6大实战练习,限200人)...
  8. 亚马逊Listing没有销量的这些原因卖家们知多少?
  9. 情感计算-基于肢体动作和生理信号的情感识别
  10. 【译】工程师如何打怪升级