mysql死锁分析show engine innodb status

news2024/11/24 11:45:00

文章目录

    • 1、show engine innodb status命令
    • 2、前置知识
    • 3、无符号数、有符号数
    • 4、innodb关于有符号数的规定
    • 5、为什么会有这个规定

1、show engine innodb status命令

最近在使用mysql的show engine innodb status命令分析死锁,发现了一个有意思的点。就是红框里圈出来的这个。
在这里插入图片描述
红框的数据所代表的是sql语句需要获取的行锁。实际上,这个值应该是-1才对,很纳闷,为什么会展示7fffffff呢?其实这个事和innodb的一条关于有符号数的规定有关系。

2、前置知识

hex 7fffffff,代表16进制的int最大值,要分析为什么是这个数,得先了解计算机的二进制相关的原码、反码和补码的知识,我搜了一篇文章,讲的挺清晰的。不了解这块知识的,可以先补一下。原码、反码、补码

3、无符号数、有符号数

测试中,我用的是表t。表t中的列如果没有特殊设置,默认是有符号数,意思是这一列,你可以存负数。但是如果你设置了列为无符号数列,对应的建表语句中就会出现UNSIGNED关键字。如下:
id int(11) UNSIGNED NOT NULL
此时这一列,不允许插入负数。

当我们没加UNSIGNED关键字的时候,smallint存储的是:-32768~32767
如果加了UNSIGNED关键字,smallint存储的是:0~65535。

4、innodb关于有符号数的规定

innodb的规定是:如果表中的列存储有符号数据,此时数据对应的二进制数首位的0和1要互换。举个例子,就拿我们上面的数据来说。
7fffffff,这个数是int的最大值2147483647,换算成二进制是:
01111111 11111111 11111111 11111111
此时按照mysql的规定,首位的0要变成1,就是下面这个样子
11111111 11111111 11111111 11111111
这个数是补码,对应的原码就是-1,(大家补完上面原码、反码、补码的知识后,就知道为什么是-1了)

5、为什么会有这个规定

我没有找到官方对这一规定的描述,查了查资料。innodb这么搞,据说是节省空间,不用专门搞字段识别一个列是否存储的是有符号数。如果有大佬找到了官方关于这个规定的解释,希望能在评论区贴一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/856201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【小梦C嘎嘎——启航篇】类和对象(中篇)

【小梦C嘎嘎——启航篇】类和对象(中篇)😎 前言🙌类的6个默认成员函数构造函数析构函数拷贝构造函数拷贝构造函数的特性有哪些?既然编译器可以自动生成一个拷贝构造函数,为什么我们还要自己设计实现呢&…

python数据分析 期末测验,python数据分析基础题库

大家好,小编为大家解答python数据分析选择题题目的问题。很多人还不知道python数据分析题目和答案,现在让我们一起来看看吧! 自测试卷 5 一、选择题 1 .下面关于 RFM 模型说法正确的是( )。 A .…

微信小程序(由浅到深)

文章目录 一. 项目基本配置1. 项目组成2. 常见的配置文件解析3. app.json全局的五大配置4.单个页面中的page配置5. App函数6.tabBar配置 二. 基本语法,事件,单位1. 语法2. 事件3. 单位 三. 数据响应式修改四 . 内置组件1. button2. image3. input4. 组件…

钓鱼攻击:相似域名识别及如何有效预防攻击

网络犯罪分子很乐意劫持目标公司或其供应商或业务合作伙伴的官方域名,但在攻击的早期阶段,他们通常没有这种选择。相反,在有针对性的攻击之前,他们会注册一个与受害组织的域名相似的域名 - 他们希望您不会发现其中的差异。此类技术…

opencv基础51-图像轮廓04-轮廓多种图形拟合讲解及示例

轮廓拟合(Contour Fitting)是指在图像处理中,通过一些数学模型或曲线拟合方法来近似描述图像中的轮廓。图像中的轮廓是指物体的边界,轮廓拟合可以用于提取、描述和分析物体的形状。 常用的轮廓拟合方法包括多项式拟合、贝塞尔曲线…

【刷题笔记8.9】LeetCode题目:两数相加

LeetCode题目2:两数相加 题目及描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设…

【uniapp】封装一个全局自定义的模态框

【需求描述】 在接口401处,需要实现全局提示并弹出自定义模态框的功能。考虑到uni-app内置的模态框和app原生提示框的自定义能力有限,我决定自行封装全局自定义的模态框,以此为应用程序提供更加统一且个性化的界面。 【效果图】 【封装】 主…

Ansible Playbook快速部署一主多从MySQL集群

部署目标: 1、快速部署一套一主两从的mysql集群 2、部署过程中支持交互式定义安装目录及监听端口号 部署清单目录结构: rootmaster:/opt/mysql# tree . . ├── group_vars │ └── all.yml ├── hosts ├── mysql.yml └── roles└── mys…

两个状态的马尔可夫链

手动推导如下公式。 证明: 首先将如下矩阵对角化: { 1 − a a b 1 − b } \begin {Bmatrix} 1-a & a \\ b & 1-b \end {Bmatrix} {1−ab​a1−b​} (1)求如下矩阵的特征值: { 1 − a a b 1 − b } { x 1 x 2 } λ { x 1 x 2 }…

Android Https

本质:在客户端和服务端使用非对称加密协商出一套对称密钥,每次发送数据前加密,收到后解密,达到加密传输 http ssl 在http之下增加了安全层,用于保障http的加密传输 HTTPS连接 TLS连接步骤 1.客户端发送 client h…

Apache Doris 入门教程25:通过开启 Debug 日志进行性能分析

Doris 的 FE 和 BE 节点的系统运行日志默认为 INFO 级别。通常可以满足对系统行为的分析和基本问题的定位。但是某些情况下,可能需要开启 DEBUG 级别的日志来进一步排查问题。本文档主要介绍如何开启 FE、BE节点的 DEBUG 日志级别。 不建议将日志级别调整为 WARN 或…

一维二维数组的指针于sizeof和strlen

目录 一维数组于指针的一些题二维数组于指针的一些题 一维数组于指针的一些题 对数组名的理解 数组名表示首元素地址 //两个例外: //sizeof(数组名):表示计算整个数组的大小 //&数组名:这里取的也是整个数组的大小,除了他两以…

ArcGIS、ENVI、InVEST、FRAGSTATS技术教程

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化:地图符号与注…

23.8.9总结

接下来是答辩后的完善: 轮播图在管理员处可以进行修改, 消息处用websocket实现实时更新, 管理员审核界面,未审核的文章不能点赞,评论,收藏,不能用前端页面, 评论用二级评论&…

(el-Table)操作:Element-plus 中Table 表格组件:多选修改成支持单选及表格相关样式的调整

Ⅰ、Element-plus 提供的 Table 表格组件与想要目标情况的对比: 1、Element-plus 提供 Table 组件情况: 其一、Element-ui 自提供的 Table 代码情况为(示例的代码): // Element-plus 自提供的代码: // 此时是使用了 ts 语言环境…

.NET根据类的值进行序列化反序列化操作

前言: 在.NET种,序列化一般常用的方式是使用Newtonsoft.Json进行序列化和反序列化操作,比如创建一个Person类 public class Person {public string Name { get; set; }public int Age { get; set; } }序列化为json // 对象序列化为 JSONPe…

vuejs 设计与实现 - 快速diff算法

Vue.js 2 所采用的双端 Diff 算法。既然快速 Diff 算法如此高效,我们有必要了解它的思路。接下来,我们就着重讨论快速 Diff 算法的实现原理。 相同的前置元素和后置元素 快速 Diff 算法借鉴了纯文本 Diff 算法中预处理的步骤。 案例: 旧的…

数据结构-队列(C语言的简单实现)

简介 队列也是一种数据结构,队列也可以用来存放数字每次只能向队列里将入一个数字,每次只能从队列里获得一个数字在队列中,允许插入的一段称为入队口,允许删除的一段称为出队口它的原则是先进先出(FIFO: first in first out)&…

Java8实战-总结15

Java8实战-总结15 引入流流简介流与集合 引入流 流简介 要讨论流,先来谈谈集合,这是最容易上手的方式。Java 8中的集合支持一个新的stream方法,它会返回一个流(接口定义在java.util.stream.Stream里)。在后面会看到,还有很多其他…