14.5.5.1 An InnoDB Deadlock Example  一个InnoDB 死锁实例下面的例子演示了一个错误可以发生当一个lock 请求会导致一个死锁,例子设计2个客户端,A和B:Jekins:/root# mysql -uroot -p1234567 -e"SHOW ENGINE INNODB STATUS\G;" | grep -i dead
Warning: Using a password on the command line interface can be insecure.首先, client A 创建一个表包含一个记录, 然后开始一个事务,在事务中,通过selecting在共享模式得到一个S锁mysql> CREATE TABLE t (i INT) ENGINE = InnoDB;
Query OK, 0 rows affected (1.07 sec)mysql> INSERT INTO t (i) VALUES(1);
Query OK, 1 row affected (0.09 sec)mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM t WHERE i = 1 LOCK IN SHARE MODE;
+------+
| i    |
+------+
|    1 |
+------+接着,Client B 开始一个事务和尝试删除记录mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)mysql> DELETE FROM t WHERE i = 1;删除操作需要一个X锁,lock 不能被立即授权 因为它不兼容S锁 客户端A持有的,最后,Client A 尝试删除表的记录mysql> DELETE FROM t WHERE i = 1;
ERROR 1213 (40001): Deadlock found when trying to get lock;
try restarting transactionDeadlock 发生 因为client A 需要一个X锁来删除记录。然而,lock 请求不能被立即授予因为Client B有一个请求X锁 在等待客户端A 来释放他的S锁。S锁被client A持有的也不能升级为X锁 。这样,InnoDB 产生一个错误------------------------
LATEST DETECTED DEADLOCK
------------------------
2016-10-31 10:06:09 7f0341d30700
*** (1) TRANSACTION:
TRANSACTION 15945, ACTIVE 5 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 5, OS thread handle 0x7f0341ae9700, query id 368 localhost root updating
DELETE FROM t WHERE i = 1
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 583 page no 3 n bits 72 index `GEN_CLUST_INDEX` of table `zjzc`.`t` trx id 15945 lock_mode X waiting
Record lock, heap no 2 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 6; hex 000000005c00; asc     \ ;;1: len 6; hex 000000003e47; asc     >G;;2: len 7; hex c7000001be0110; asc        ;;3: len 4; hex 80000001; asc     ;;*** (2) TRANSACTION:
TRANSACTION 15944, ACTIVE 24 sec starting index read
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1184, 3 row lock(s)
MySQL thread id 4, OS thread handle 0x7f0341d30700, query id 369 localhost root updating
DELETE FROM t WHERE i = 1
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 583 page no 3 n bits 72 index `GEN_CLUST_INDEX` of table `zjzc`.`t` trx id 15944 lock mode S
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 00: len 8; hex 73757072656d756d; asc supremum;;Record lock, heap no 2 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 6; hex 000000005c00; asc     \ ;;1: len 6; hex 000000003e47; asc     >G;;2: len 7; hex c7000001be0110; asc        ;;3: len 4; hex 80000001; asc     ;;*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 583 page no 3 n bits 72 index `GEN_CLUST_INDEX` of table `zjzc`.`t` trx id 15944 lock_mode X waiting
Record lock, heap no 2 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 6; hex 000000005c00; asc     \ ;;1: len 6; hex 000000003e47; asc     >G;;2: len 7; hex c7000001be0110; asc        ;;3: len 4; hex 80000001; asc     ;;*** WE ROLL BACK TRANSACTION (1)

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199043.html

14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例相关推荐

  1. 初探mysql innodb集群_MySQL InnoDB Cluster搭建

    MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...

  2. mysql innodb xtrabackup_Xtrabackup使用指南 InnoDB数据备份工具

    一.Xtrabackup介绍 A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbac ...

  3. mysql innodb 聚簇_MySQL InnoDB 聚簇索引和非聚簇索引

    每个 InnoDB 表都有一个称为 「 聚簇索引 」 的特殊索引,通常情况下,这个聚簇索引就是 「 主键 」( primary key ) .Innodb 使用它存储表中每一行的数据. 如果想要从 查 ...

  4. mysql innodb 设置,Mysql5.5 InnoDB存储引擎简单设置

    环境为CentOS系统,1G内存,Mysql5.5.30. 在/etc/my.cnf内添加: skip-external-locking skip-name-resolve max_connectio ...

  5. mysql 5.7 innodb 预热_mysql5.7 InnoDB数据表空间文件平滑迁移

    [ERROR] [FATAL] InnoDB: Tablespace id is 14 in the data dictionary but in file ./mysql/innodb_index_ ...

  6. mysql innodb 多线程插入_mysql innodb 并发插入问题,包大量死锁错误

    开了10个并发写线程,没1000条记录批量提交一次,结果mysql包大量死锁错误! "Deadlock found when trying to get lock; try restarti ...

  7. mysql如何管理innodb元数据_MySQL 8 InnoDB 集群管理

    使用 dba.checkInstanceConfiguration() 在添加实例到集群中前,使用该方法检查实例配置是否满足InnoDB 集群要求. 使用 dba.configureLocalInst ...

  8. mysql innodb 恢复_MySQL之Innodb恢复的学习笔记

    MySQL · 引擎特性 · InnoDB 崩溃恢复过程 enum { SRV_FORCE_IGNORE_CORRUPT = 1, /*!< let the server run even if ...

  9. 数据库服务器不支持innodb存储引擎,MySQL InnoDB存储引擎表损坏恢复指南

    目的 故障排除步骤 适用于: MySQL服务器版本 5.0至5.7[5.0版到5.7] A 第一反应 A.1 停止,备份,重启 停止MySQL 服务器.如果它已经下线或崩溃,跳到步骤 2. 代码: / ...

最新文章

  1. 在性能测试时使用nmon进行监控服务器性能
  2. IO对象不可以复制或者赋值
  3. java工程打成jar包 - 使用maven assembly插件打包及手动打包
  4. python hacklib_【入门】angr:基于python的二进制分析框架
  5. 往事如烟,残阳如血......——逝去的背影(五)
  6. 《Java游戏编程原理与实践教程》读书笔记(第3章——Java图形处理和Java 2D)
  7. android icon换不掉图标文件夹,如何替换android系统中的文件夹图标
  8. 汇编语言--常用DOS功能
  9. 51单片机 - 红外遥控时钟
  10. 商业虚拟专用网络技术十二 BGP/MPLS
  11. android fake camera,码市 - No.22987 - android fake camera - 其他
  12. 工程师“魔改” AirPods Pro 接口,苹果“妥协”将成大势所趋?
  13. 在虚拟机端搭建lamp和通过docker技术在云服务器搭建lamp环境
  14. C++ 虚函数详解(虚函数表、vfptr)——带虚函数表的内存分布图
  15. 什么是SaaS? 定义软件即服务
  16. 目标检测新方式 | class-agnostic检测器用于目标检测(附论文下载链接)
  17. CMake设置MSVC工程MT/MTd/MD/MDd
  18. 项目管理文档_PPM优课第18期 | 不同项目管理模式“武装”质量管理体系的搭建...
  19. 【笔记】Spring - Spring Data JPA
  20. sae php mysql数据库,php连接mysql数据库(新浪云SAE)

热门文章

  1. 知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln
  2. Windows 8 C++/CX字符串
  3. 根据IP地址获取主机名称
  4. Mybatis 拦截器介绍
  5. “云计算”越来越重要 但更重要的是“云安全”
  6. LINUX添加一块网卡地址配置及问题
  7. 用UltraISO制作的u盘ubuntu11.04,启动失败解决方案
  8. XP系统安装SQL2000企业版开启1433端口
  9. [AX]AX2012 AIF(二):文档服务编程模型
  10. 云计算-从基础到应用架构系列-云计算的演进