mysql - Innodb 事务是否阻止读取或排序?
问题描述
我有一个包含许多行的表,其中包含我订购的索引列。我有更新此特定表的单行并更改该索引列的值(以及该行中的一些其他值)的事务
我的问题是:
如果我在事务更新时尝试读取一行,我可以这样做吗?还是在事务完成之前读取被阻塞?
我所做的交易专门更新了索引列,我使用“order by”查询对其进行排序。SELECT * ... ORDER BY 查询可以在不被这些事务阻塞的情况下正常运行吗?还是必须等到修改我正在排序的索引列的事务完成?
解决方案
您正在询问事务的行为,而充分理解系统行为的最佳方法是阅读事务隔离级别并查看数据库正在运行的事务隔离级别。
不过,一般来说,您会发现当一行被更新时,它被排他锁锁定,因此在事务完成之前不可用。
更直接地回答您的问题。
检查您是否在读取已提交或未提交读取中运行,这可能会有所不同,您是否可以在更新行时读取该行。
- 事务隔离级别将同样发挥作用。
推荐阅读
- android - Toast 消息在 Recycler 视图中不起作用
- excel - 在电源查询 Excel VBA 中获取无效的过程调用或参数错误
- python - 无法从使用 python beautifulsoup 的网页抓取以及如何抓取包含许多页面的表格中找到 HTML 中的表格标签
- swift - 如何对 RealityKit 动画完成执行操作
- node.js - 使用 ImageMagick 的 mpr 批量调整大小并在 Node.js 中生成
- javascript - 如何访问目录/子目录/子目录?
- bash - Bash,如何在一行代码中创建一个数组
- c# - 记录器类的 StreamWriter 的 C# 正确实现
- python - 如何部署一个python项目?
- javascript - 如何在jQuery中触发视觉效果并随后调用函数?