检查锁与锁之间的兼容性

路径:/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));
}

最新文章

  1. linux下用c实现ls命令
  2. swift 命名,字符串
  3. 用php怎么写一个用户注册登录的页面呢?
  4. this.down和this.up用法
  5. 【python cookbook】【数据结构与算法】2 从任意长度的可迭代对象中分解元素
  6. 数往知来C#面向对象〈三〉
  7. bzoj1832
  8. QStringLiteral(源代码里有一个通过构造函数产生的从const char*到QString的隐式转换,QStringLiteral字符串可以放在代码的任何地方,编译期直接生成utf16字符串,速度很快,体积变大)
  9. How to use dt.Rows.Cast&lt;System.Data.DataRow&gt;().Take(n)
  10. 通过批处理 安装 mongodb和设置身份验证
  11. Atlas框架介绍集成(一)
  12. Python基础(生成器)
  13. Java生成全局唯一ID代码演示
  14. pycharm汉化补丁
  15. 名字top500字典 各种格式及python脚本
  16. Linux下查看tomcat版本
  17. pymysql-python爬虫数据存储准备
  18. nginx之七:nginx path(root)文件路径配置
  19. MySQL(介绍,安装,密码操作,权限表)
  20. Best Cow Line(POJ3617)

热门文章

  1. HDOJ 1069 DP
  2. C/C++中内存区域划分大总结
  3. javascript设计模式-迭代器模式(Iterator)
  4. mouseover与mouseenter的区别
  5. iOS音效
  6. DevExpress GridView 自定义搜索按钮改为中文内容
  7. Codeforces Round #336 (Div. 2) D. Zuma 区间dp
  8. java如何追加写入txt文件
  9. java消息队列
  10. java开发--struts2 标签库使用