• 技术文章 >数据库 >mysql教程

    Mysql-InnoDB锁的相关内容介绍

    不言不言2019-02-21 13:03:12转载870
    本篇文章给大家带来的内容是关于Mysql-InnoDB锁的相关内容介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    锁类型

    行级锁

    锁模式只有LOCK_S 和LOCK_X,其他的 FLAG 用于锁的描述,如前述 LOCK_GAP、LOCK_REC_NOT_GAP 以及 LOCK_ORDINARY、LOCK_INSERT_INTENTION 四种描述。(相关推荐:MySQL教程

    LOCK_REC_NOT_GAP

    LOCK_GAP

    LOCK_ORDINARY(Next-Key Lock)

    LOCK_INSERT_INTENTION

    static const byte lock_compatibility_matrix[5][5] = {
    /** IS IX S X AI /
    / IS / { TRUE, TRUE, TRUE, FALSE, TRUE},
    / IX / { TRUE, TRUE, FALSE, FALSE, TRUE},
    / S / { TRUE, FALSE, TRUE, FALSE, FALSE},
    / X / { FALSE, FALSE, FALSE, FALSE, FALSE},
    / AI / { TRUE, TRUE, FALSE, FALSE, FALSE}
    };

    对于GAP类型(锁对象建立在supremum上或者申请的锁类型为LOCK_GAP)且申请的不是插入意向锁时,无需等待任何锁,这是因为不同Session对于相同GAP可能申请不同类型的锁,而GAP锁本身设计为不互相冲突;
    LOCK_ORDINARY 或者LOCK_REC_NOT_GAP类型的锁对象,无需等待LOCK_GAP类型的锁;
    LOCK_GAP类型的锁无需等待LOCK_REC_NOT_GAP类型的锁对象;
    任何锁请求都无需等待插入意向锁。

    表级锁

    InnoDB的表级别锁包含五种锁模式:LOCK_IS、LOCK_IX、LOCK_X、LOCK_S以及LOCK_AUTO_INC锁,锁之间的相容性遵循数组lock_compatibility_matrix中的定义。

    InnoDB表级锁的目的是为了防止DDL和DML的并发问题。但从5.5版本开始引入MDL锁后,InnoDB层的表级锁的意义就没那么大了,MDL锁本身已经覆盖了其大部分功能。

    意向锁是表级别的,IS和IX锁之间相互并不冲突,但与表级S/X锁冲突。
    在对记录加S锁或者X锁时,必须保证其在相同的表上有对应的意向锁或者锁强度更高的表级锁。

    以上就是Mysql-InnoDB锁的相关内容介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:数据库 mysql
    上一篇:mysql中delete from where子查询的限制介绍 下一篇:Redis的持久化和主从复制机制介绍
    PHP编程就业班

    相关文章推荐

    • php mysql_real_escape_string函数用法与实例教程_php基础• 测试PHP连接MYSQL成功与否的代码_php基础• 浅谈php备份与还原MySql的方法• Bootstrap富文本组件wysiwyg数据保存到mysql的方法_javascript技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网