zoukankan      html  css  js  c++  java
  • innodb锁之间的兼容性判断

    检查锁与锁之间的兼容性

    路径:/mysql-5.5.43/storage/innobase/lock/lock0lock.c 

    实现:见锁的强度比较

     row 可理解为 lock 的锁模式

     column 可理解为 预加锁的模式

    反过来也行

    速记:只要包括X字符,跟谁都不兼容

    /* LOCK COMPATIBILITY MATRIX
     *     IS    IX    S    X     AI
     * IS  +     +     +    -     +
     * IX  +     +     -    -     +
     * S   +     -     +    -     -
     * X   -     -     -    -     -
     * AI  +     +     -    -     -
     *
     * Note that for rows, InnoDB only acquires S or X locks.
     * For tables, InnoDB normally acquires IS or IX locks.
     * S or X table locks are only acquired for LOCK TABLES.
     * Auto-increment (AI) locks are needed because of
     * statement-level MySQL binlog.
     * See also lock_mode_compatible().
     */
    
    /*********************************************************************//**
    Calculates if lock mode 1 is compatible with lock mode 2.
    @return    nonzero if mode1 compatible with mode2 */
    UNIV_INLINE
    ulint
    lock_mode_compatible(
    /*=================*/
        enum lock_mode    mode1,    /*!< in: lock mode */
        enum lock_mode    mode2)    /*!< in: lock mode */
    {
        ut_ad(mode1 == LOCK_X || mode1 == LOCK_S || mode1 == LOCK_IX
              || mode1 == LOCK_IS || mode1 == LOCK_AUTO_INC);
        ut_ad(mode2 == LOCK_X || mode2 == LOCK_S || mode2 == LOCK_IX
              || mode2 == LOCK_IS || mode2 == LOCK_AUTO_INC);
    
        return((LOCK_MODE_COMPATIBILITY) & LK(mode1, mode2));
    }
  • 相关阅读:
    送股分红是怎么回事?
    基金申购费用计算
    msn 爬楼梯
    沪市证券交易费用
    OS X
    见到郎咸平:)
    Long long time_Blog更新了
    生~气:)
    突然想起去年的今天
    久久沉思以后
  • 原文地址:https://www.cnblogs.com/taek/p/4938901.html
Copyright © 2011-2022 走看看