【发布时间】:2013-08-06 21:13:25
【问题描述】:
我很好奇 MySQL 的写锁以及它们之间的优先级如何。具体来说,我想知道“低优先级写入”锁的优先级是否低于“普通”写入锁,或者它们是否相等。我能找到的唯一文档指出,低优先级锁的优先级低于读锁,允许首先处理读锁。但我找不到任何说明它们与其他写锁的关系。
我正在寻找一种方法来“优先化”写锁,并且想知道是否只有标准的低优先级锁可以满足我的需求。
【问题讨论】:
标签: mysql table-locking
我很好奇 MySQL 的写锁以及它们之间的优先级如何。具体来说,我想知道“低优先级写入”锁的优先级是否低于“普通”写入锁,或者它们是否相等。我能找到的唯一文档指出,低优先级锁的优先级低于读锁,允许首先处理读锁。但我找不到任何说明它们与其他写锁的关系。
我正在寻找一种方法来“优先化”写锁,并且想知道是否只有标准的低优先级锁可以满足我的需求。
【问题讨论】:
标签: mysql table-locking
相比之下,对 LOW_PRIORITY WRITE 锁的请求允许首先满足其他会话的后续 READ 锁请求如果它们在 LOW_PRIORITY WRITE 请求等待时发生 [被授予].
没有提到对WRITE 锁定请求的影响,因此LOW_PRIORITY 修饰符对并发它们没有影响。
LOW_PRIORITY 修饰符从 MySQL 5.5.3 起无效
And:
从 MySQL 5.6.5 开始,它已被弃用,并且它的使用会产生警告。改用没有 LOW_PRIORITY 的 WRITE。
【讨论】:
If a session issues a LOCK TABLES statement to acquire a lock while already holding locks, its existing locks are released implicitly before the new locks are granted. 我担心隐式释放先前锁和新锁之间的时间。如果另一个会话在隐式释放之前请求了写锁,那么第二个会话会在第一个会话之前获得锁吗?
LOW_PRIORITY。在测试台上很容易验证。