【发布时间】:2010-11-09 16:19:42
【问题描述】:
如果有一个项目在一个表上的读锁定整整一分钟,那么其他项目仍然可以不间断地读取同一个表。
所以我可以有这个时间表
A 使读锁定一分钟 B、C、D、E ... 以及更多仍然可以毫无问题地从该表中读取
但是说 T 要求 write 锁。 T 必须等待.. 似乎 U V W 都在等待 T,即使 U V W 只是请求读锁而 T 还没有真正获得它的锁。
是否可以禁用这种先进先出的优先级排序并赋予读锁比写锁更高的优先级?
编辑:也许我可以在更新命令上设置某种低优先级开关?我希望它是同步的(所以一个线程可以等到它完成,即使它是低优先级的)。
【问题讨论】:
-
我不知道这是否可能,但在一个繁忙的数据库中,我认为这会导致写锁的饥饿的可能性很高,因为如果有持续的读锁,它们将永远无法获得需要。
-
我们在谈论
MyISAM,不是吗? -
@tloach 通常没有恒定的读锁。
标签: mysql concurrency