14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例
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 死锁实例相关推荐
- 初探mysql innodb集群_MySQL InnoDB Cluster搭建
MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...
- mysql innodb xtrabackup_Xtrabackup使用指南 InnoDB数据备份工具
一.Xtrabackup介绍 A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbac ...
- mysql innodb 聚簇_MySQL InnoDB 聚簇索引和非聚簇索引
每个 InnoDB 表都有一个称为 「 聚簇索引 」 的特殊索引,通常情况下,这个聚簇索引就是 「 主键 」( primary key ) .Innodb 使用它存储表中每一行的数据. 如果想要从 查 ...
- mysql innodb 设置,Mysql5.5 InnoDB存储引擎简单设置
环境为CentOS系统,1G内存,Mysql5.5.30. 在/etc/my.cnf内添加: skip-external-locking skip-name-resolve max_connectio ...
- mysql 5.7 innodb 预热_mysql5.7 InnoDB数据表空间文件平滑迁移
[ERROR] [FATAL] InnoDB: Tablespace id is 14 in the data dictionary but in file ./mysql/innodb_index_ ...
- mysql innodb 多线程插入_mysql innodb 并发插入问题,包大量死锁错误
开了10个并发写线程,没1000条记录批量提交一次,结果mysql包大量死锁错误! "Deadlock found when trying to get lock; try restarti ...
- mysql如何管理innodb元数据_MySQL 8 InnoDB 集群管理
使用 dba.checkInstanceConfiguration() 在添加实例到集群中前,使用该方法检查实例配置是否满足InnoDB 集群要求. 使用 dba.configureLocalInst ...
- mysql innodb 恢复_MySQL之Innodb恢复的学习笔记
MySQL · 引擎特性 · InnoDB 崩溃恢复过程 enum { SRV_FORCE_IGNORE_CORRUPT = 1, /*!< let the server run even if ...
- 数据库服务器不支持innodb存储引擎,MySQL InnoDB存储引擎表损坏恢复指南
目的 故障排除步骤 适用于: MySQL服务器版本 5.0至5.7[5.0版到5.7] A 第一反应 A.1 停止,备份,重启 停止MySQL 服务器.如果它已经下线或崩溃,跳到步骤 2. 代码: / ...
最新文章
- 在性能测试时使用nmon进行监控服务器性能
- IO对象不可以复制或者赋值
- java工程打成jar包 - 使用maven assembly插件打包及手动打包
- python hacklib_【入门】angr:基于python的二进制分析框架
- 往事如烟,残阳如血......——逝去的背影(五)
- 《Java游戏编程原理与实践教程》读书笔记(第3章——Java图形处理和Java 2D)
- android icon换不掉图标文件夹,如何替换android系统中的文件夹图标
- 汇编语言--常用DOS功能
- 51单片机 - 红外遥控时钟
- 商业虚拟专用网络技术十二 BGP/MPLS
- android fake camera,码市 - No.22987 - android fake camera - 其他
- 工程师“魔改” AirPods Pro 接口,苹果“妥协”将成大势所趋?
- 在虚拟机端搭建lamp和通过docker技术在云服务器搭建lamp环境
- C++ 虚函数详解(虚函数表、vfptr)——带虚函数表的内存分布图
- 什么是SaaS? 定义软件即服务
- 目标检测新方式 | class-agnostic检测器用于目标检测(附论文下载链接)
- CMake设置MSVC工程MT/MTd/MD/MDd
- 项目管理文档_PPM优课第18期 | 不同项目管理模式“武装”质量管理体系的搭建...
- 【笔记】Spring - Spring Data JPA
- sae php mysql数据库,php连接mysql数据库(新浪云SAE)
热门文章
- 知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln
- Windows 8 C++/CX字符串
- 根据IP地址获取主机名称
- Mybatis 拦截器介绍
- “云计算”越来越重要 但更重要的是“云安全”
- LINUX添加一块网卡地址配置及问题
- 用UltraISO制作的u盘ubuntu11.04,启动失败解决方案
- XP系统安装SQL2000企业版开启1433端口
- [AX]AX2012 AIF(二):文档服务编程模型
- 云计算-从基础到应用架构系列-云计算的演进