暂无图片
mysql中rc隔离下,select for update和update的不同?
我来答
分享
暂无图片 匿名用户
mysql中rc隔离下,select for update和update的不同?

表abc (id  primary key, cid int)

有2列

表里的数据有2条


1 , 100

2, 200


begin;select * from  abc where cid=100 for update  ;

begin;select * from  abc where cid=200 for update  ; 

在rc 下面,上面for update这两个发生了等待

begin;update  abc set cid=cid+1  where cid=100;

begin;update  abc set cid=cid+1  where cid=200;

这2个update没有等待,能执行成功

请问这个里面的原因是啥呢?谁帮忙详细给讲一下

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
everything

explain 看看

暂无图片 评论
暂无图片 有用 1
打赏 0
张sir

select for update 执行计划走的全表扫描,mysql就会锁全表

update 走的是主键索引,在rc模式下,就锁单个记录。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL数据库内存升高问题
回答 3
A
疫情当下,有哪些优秀的资料推荐学习MySQL呢?
回答 4
文档类:1、MySQL官方文档书籍类:1、《高性能MySQL》2、《MySQL技术内幕》3、《MySQL性能优化金字塔法则》4、《MySQLDBA工作笔记》公众号:1、知数堂、老叶茶馆2、yangyi
MySQL 增删改查过程中都会加锁吗?
回答 2
是的,但是根据隔离级别的不同,以及增删改方式不同,上的锁也有所不同
MYSQL 数据库设计上 的枚举数据 用int 还是 string,理由是什么?
回答 2
已采纳
根据我实际经验来看,用int可以减少数据库的存储及前后端交互的数据大小,但缺点是数字本身无法代表对应的业务含义,在开发运维调试的时候需要反复去找对照关系,效率低。不过如果枚举值少的话,多搞几次就记得了
MySQL 数据库 ,怎么知道究竟用的哪个引擎?
回答 8
现在基本上都是innoDB引擎了吧,除非版本很早的。
MySQL中Cache替换算法有哪些?
回答 1
已采纳
数据可以存放在CPU或者内存中。CPU处理速度快,但是容量少;内存容量大,但是转交给CPU处理的速度慢。为此,需要Cache来做一个折中。将最有可能调用数据先从内存Cache,CPU再从Cache读取
MySQL在查询处理的哪个阶段创建查询的执行计划??
回答 4
已采纳
1.语法分析阶段:将SQL查询语句经词法和语法分析后变换为一颗查询树stselectlex传给优化器,并对SQL表达的语义进行检查。2.生成逻辑查询执行计划阶段:优化器在查询树中遍历每个关系,确定关系
MySQL B+ 树中,key存储的就是索引的那个字段吗?
回答 1
node存储的就是索引keyleaf一级索引存储的就是这一行数据,二级索引存储的就是主键KEY
mariadb 10.3.10迁移到MySQL8.0.31,如何操作?
回答 1
mysqldump导出数据库,在导入mysql8.0.31数据库中
mysql文件打开数过大
回答 1
分区表太多了嘛?可以把分区表整理合并一下或者归档掉