【问题标题】:MySQL Write Lock PriorityMySQL 写锁优先级
【发布时间】:2013-08-06 21:13:25
【问题描述】:

我很好奇 MySQL 的写锁以及它们之间的优先级如何。具体来说,我想知道“低优先级写入”锁的优先级是否低于“普通”写入锁,或者它们是否相等。我能找到的唯一文档指出,低优先级锁的优先级低于读锁,允许首先处理读锁。但我找不到任何说明它们与其他写锁的关系。

我正在寻找一种方法来“优先化”写锁,并且想知道是否只有标准的低优先级锁可以满足我的需求。

【问题讨论】:

    标签: mysql table-locking


    【解决方案1】:

    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 开始,它已被弃用,并且它的使用会产生警告。改用没有 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。在测试台上很容易验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多