- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 spot
和 reservation
的表。 spot
包含列 spot_id
和 spot_status
。对于预订过程,我启动一个事务,然后使用此查询获取特定行的锁定。我正在使用 php 和 mysql。
//start transaction
SELECT * FROM spot WHERE spot_id = $id FOR UPDATE ;
//if this query is successful then
1. set spot status to 1
2. insert corresponding values in reservation table.
and then commit else rollback
//transactions ends
假设有 2 个并发事务 T1 和 T2 试图保留相同的位置。根据我从本网站其他人的问题和答案中了解到的情况,如果事务不是并发的,则不会有任何问题,但在并发操作中,处理器可以随时从 T1 时间表更改为 T2 时间表。 T1 获取行上的锁后,假设处理器切换到事务 T2。然后,T2 尝试获取同一行上的锁,但它不能,因为它已被 T1 锁定。
我的问题是理论上的:
最佳答案
您的锁管理策略是正确的。
如果T1首先获得了spot/spot_id=$id上的锁,那么T2将等待直到T1提交或回滚事务。如果 T1 崩溃或超时,回滚将是隐式的。
如果你想要死锁,试试这个。
让 T1 锁定第 1 行(“ fork ”),然后锁定第 2 行(“刀”)。让 T2 锁定第 2 行(“刀”),然后锁定第 1 行(“ fork ”)。
同时运行它们。最终你会发现T2只拿着一把刀,而T1只拿着一把 fork 。他们会互相盯着对方,饥肠辘辘,等待对方放下工具。
关于php - Mysql - 并发事务中的行级锁定死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25202406/
我有类似下面的代码: ... id: myComponent signal updateState() property variant modelList: [] Repeater { mo
我正在处理一些我无法展示的私有(private)代码,但我已经制作了一些示例代码来描述我的问题: 主.c: #include #include #include #include typede
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: what are the differences in die() and exit() in PHP? 我想
在编写 Perl 模块时,在模块内部使用 croak/die 是一个好习惯吗? 毕竟,如果调用者不使用 eval block ,模块可能会使调用它的程序崩溃。 在这些情况下,最佳做法是什么? 最佳答案
我有一些搜索线程正在存储结果。我知道当线程启动时,JVM native 代码会代理在操作系统上创建新 native 线程的请求。这需要 JVM 之外的一些内存。当线程终止并且我保留对它的引用并将其用作
我刚刚花了很多时间调试一个我追溯到 wantarray() 的问题。 .我已将其提炼为这个测试用例。 (忽略 $! 在这种情况下不会有任何有用信息的事实)。我想知道为什么wantarray在第二个示例
我看到一些代码是这样做的: if(something){ echo 'exit from program'; die; } ...more code 和其他只使用 die 的人: if
我正在尝试将此表格用于: 如果任何 $_POST 变量等于任何其他 $_POST 变量抛出错误。 如果只有几个,那不是问题,但我有大约 20 个左右所以如果我想这样做,我将不得不像这样 但这
每次我运行: hadoop dfsadmin -report 我得到以下输出: Configured Capacity: 0 (0 KB) Present Capacity: 0 (0 KB) DFS
我是一名优秀的程序员,十分优秀!