接上一篇,演示环境一样。
我们看行锁的情况。
首先:发出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 ,人工删除锁记录。那边被影响的记录就可以修改了。
分享到:
相关推荐
58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55.MySQL高级_读锁案例讲解2.avi 54.MySQL高级_读锁案例讲解.avi 53.MySQL高级_数据库锁理论概述.avi 52...
19.MySQL高级锁InnoDB行锁基本演示.avi 20.MySQL高级锁InnoDB行锁行锁升级为表锁.avi 21.MySQL高级锁InnoDB行锁间隙锁危害.avi 22.MySQL高级锁InnoDB行锁争用情况查看.avi 23.MySQL高级锁InnoDB行锁总结.avi 24....
尚硅谷_MySQL高级_行锁演示答疑补充 · 59.尚硅谷_MySQL高级_索引失效行锁变表锁 · 60.尚硅谷_MySQL高级_间隙锁危害 · 61.尚硅谷_MySQL高级_如何锁定一行 · 62.尚硅谷_MySQL高级_行锁总结 · 63.尚硅谷_...
为了更好地理解行级锁定,我们可以通过以下示例进行演示: 1. **通过主键索引来查询数据库使用行锁**: 在这个例子中,我们有3个命令行窗口。首先,窗口1和窗口2尝试获取对用户ID为1的记录的排他锁。窗口1成功获取...
行锁涉及的案例分析可以参考具体的SQL演示和操作,例如通过建表、插入数据、执行锁定等操作来观察行锁的行为。 总结来说,MySQL锁机制的关键点包括: - 锁的定义和目的:用于协调多个进程或线程对共享资源的并发...
- **MySQL字符集的设置**:演示如何在MySQL中正确设置字符集。 ##### 第5章 索引的设计和使用 - **MySQL索引概述**:介绍索引的作用和类型。 - **设计索引的原则**:提供有效的索引设计指南。 - **BTree索引与Hash...
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...
- 支持事务、行锁和外键,适合高并发场景。 - **1.15.5 MEMORY存储引擎** - 将表存放在内存中,提供高速访问。 - **1.15.6 选择合适的存储引擎** - 根据应用需求选择合适的存储引擎至关重要。 #### 十五、事务...
- **什么情况下使用行锁**:说明使用行锁的情况。 - **INSERT...SELECT...带来的问题**:分析使用INSERT...SELECT...语句可能导致的问题。 - **NEXT-KEY锁对并发插入的影响**:探讨NEXT-KEY锁机制对并发插入操作的...
1. 在sql加上判断防止数据变为负数(MYSQL的行锁支持) 2. 数据库唯一索引,防止重复购买 3. 使用消息队列 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目...
本套课程主要是对mysql的事务隔离级别以及锁相关知识进行深入讲解其中包括:mysql四大特性的深入理解、四种隔离级别的实现原理、一致性读的实现原理、全局锁、表锁、行锁,间隙锁的介绍与分析,对于难点和重点会使用...
3. scott用户:是个演示用户,是让你学习Oracle用的。 二、 常用命令 学习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 ...