`
supben
  • 浏览: 330935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql 行锁演示

 
阅读更多
接上一篇,演示环境一样。

我们看行锁的情况。


首先:发出sql :

set autocommit=0;
select * from role where id=1 for update;

由于innodb引擎支持行锁,因为id是主键(主键一定是索引),此时只会锁定 id=1的记录。

然后看mysql锁定记录,
发sql:SHOW PROCESSLIST;

+----+------+-----------------+---------+---------+------+-------+--------------
----+
| Id | User | Host            | db      | Command | Time | State | Info
    |
+----+------+-----------------+---------+---------+------+-------+--------------
----+
|  6 | root | localhost:50898 | mybatis | Sleep   |    8 | NULL  | NULL
    |
| 19 | root | localhost:51403 | mybatis | Query   |    0 | NULL  | SHOW PROCESSL
IST |
+----+------+-----------------+---------+---------+------+-------+--------------
----+
可以看到有一条锁表记录。

然后我们先修改其他行的记录,比如id=3记录。

发sql: update role set seat=99 where id =3;
mysql> update role set seat=99 where id =3;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

可以看到毫无影响。


如果写操作涉及到本条记录呢?
同样的,发出sql:update role set seat=90 where seat = 98;
此时会影响到 id=1,id=22条记录,而id=1已经被我们锁定了。

果然返回:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

结论:mysql innodb for update锁表如果where条件的列是索引,那么执行的是行锁,只锁受影响的记录,其他记录照样可以执行正常的读写。

最后同样的 执行 kill 6 ,人工删除锁记录。那边被影响的记录就可以修改了。


3
0
分享到:
评论

相关推荐

    mysql高级视频教程百度云(2019).txt

    58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55.MySQL高级_读锁案例讲解2.avi 54.MySQL高级_读锁案例讲解.avi 53.MySQL高级_数据库锁理论概述.avi 52...

    2021年MySQL高级教程视频.rar

    19.MySQL高级锁InnoDB行锁基本演示.avi 20.MySQL高级锁InnoDB行锁行锁升级为表锁.avi 21.MySQL高级锁InnoDB行锁间隙锁危害.avi 22.MySQL高级锁InnoDB行锁争用情况查看.avi 23.MySQL高级锁InnoDB行锁总结.avi 24....

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_行锁演示答疑补充 · 59.尚硅谷_MySQL高级_索引失效行锁变表锁 · 60.尚硅谷_MySQL高级_间隙锁危害 · 61.尚硅谷_MySQL高级_如何锁定一行 · 62.尚硅谷_MySQL高级_行锁总结 · 63.尚硅谷_...

    MySQL中的行级锁定示例详解

    为了更好地理解行级锁定,我们可以通过以下示例进行演示: 1. **通过主键索引来查询数据库使用行锁**: 在这个例子中,我们有3个命令行窗口。首先,窗口1和窗口2尝试获取对用户ID为1的记录的排他锁。窗口1成功获取...

    MySQL:锁机制.pdf

    行锁涉及的案例分析可以参考具体的SQL演示和操作,例如通过建表、插入数据、执行锁定等操作来观察行锁的行为。 总结来说,MySQL锁机制的关键点包括: - 锁的定义和目的:用于协调多个进程或线程对共享资源的并发...

    mysql MySQL数据库开发优化与管理维护

    - **MySQL字符集的设置**:演示如何在MySQL中正确设置字符集。 ##### 第5章 索引的设计和使用 - **MySQL索引概述**:介绍索引的作用和类型。 - **设计索引的原则**:提供有效的索引设计指南。 - **BTree索引与Hash...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    5.3.2 行锁的演示 164 5.3.3 innodb引擎与myisam引擎的性能对比 166 5.4 选择合适的事务隔离级别 168 5.4.1 事务的概念 168 5.4.2 事务的实现 169 5.4.3 事务隔离级别介绍 171 5.5 sql优化与合理利用索引 177...

    MySql培训日志_stu

    - 支持事务、行锁和外键,适合高并发场景。 - **1.15.5 MEMORY存储引擎** - 将表存放在内存中,提供高速访问。 - **1.15.6 选择合适的存储引擎** - 根据应用需求选择合适的存储引擎至关重要。 #### 十五、事务...

    MySQL技术资料来自网易的经验总结

    - **什么情况下使用行锁**:说明使用行锁的情况。 - **INSERT...SELECT...带来的问题**:分析使用INSERT...SELECT...语句可能导致的问题。 - **NEXT-KEY锁对并发插入的影响**:探讨NEXT-KEY锁机制对并发插入操作的...

    基于Springboot的电商秒杀系统+源代码+文档说明

    1. 在sql加上判断防止数据变为负数(MYSQL的行锁支持) 2. 数据库唯一索引,防止重复购买 3. 使用消息队列 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目...

    MYSQL事务隔离与锁

    本套课程主要是对mysql的事务隔离级别以及锁相关知识进行深入讲解其中包括:mysql四大特性的深入理解、四种隔离级别的实现原理、一致性读的实现原理、全局锁、表锁、行锁,间隙锁的介绍与分析,对于难点和重点会使用...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    3. scott用户:是个演示用户,是让你学习Oracle用的。 二、 常用命令 学习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 ...

Global site tag (gtag.js) - Google Analytics