2013-08-06 99 views
0

我很想知道如何使用MySQL编写锁定以及如何使用MySQL优先处理它们。具体来说,我想知道“低优先级写入”锁的优先级低于“正常”写入锁的优先级,还是相等。我能找到的唯一文档指出,低优先级锁的优先级低于读锁,允许首先处理读锁。但我找不到任何说明与其他写入锁相关的内容。MySQL写锁定优先级

这就是我正在寻找一种方法来“优先”写入锁,并想知道是否只是标准的低优先级锁将做我正在寻找。

回答

0

The manual has it all

一种用于LOW_PRIORITY WRITE锁定请求,相反,允许由其他会话后续READ锁请求如果在LOW_PRIORITY WRITE请求等待[它们发生被满足第一被授予]

没有提及对WRITE锁请求的效果,所以LOW_PRIORITY剂具有并发他们没有影响。

Beware, though

的LOW_PRIORITY修饰符无效像MySQL 5.5.3的

And

在MySQL 5.6.5的,它已被废弃,其使用会产生警告。改用WRITE而不用LOW_PRIORITY。

+0

感谢您对弃用说明,我错过了阅读手册前。这虽然是我仍然想知道的部分:'如果一个会话发出一个LOCK TABLES语句来在已经持有锁的时候获得一个锁,那么在授予新的锁之前,它的现有锁将被隐式释放。“我担心隐式释放先前的锁与新的锁之间的时间间隔。如果另一个会话在隐式释放之前请求写入锁定,第二个会话是否会在第一个会话之前被授予锁定? – orediggerco

+0

是的,无论使用“LOW_PRIORITY”。在测试表上验证很容易。 – RandomSeed