MySQL统计信息相关表介绍

2023-11-15

相信大家都了解MySQL中的统计信息,那么统计信息是存放在哪里呢?我们怎么去查看?

在MySQL中提供了两个表记录统计信息的相关内容,分别是 innodb_table_statsinnodb_index_stats。下面就这两个表的内容,与大家进行一些分享。

innodb_table_stats

这个表里面的内容还是比较好理解。

图片描述

重要的列:

  • last_update就是最后一次收集统计信息的时间
  • clustered_index_size聚集索引的page数量
  • sum_of_other_index_sizes非聚集索引的page数量

通过这些信息我们可以算出聚集索引的大小:

图片描述

innodb_index_stats

这个表里面输出的内容相对会比较复杂一些。

表结构和测试数据:

图片描述

我们主要关注的的列:

  • stat_value:显示统计值的大小
  • stat_description:类型的描述
  • stat_name:此列显示统计的类型 , 会出现下面这些:

    • size:此时stat_value显示索引的page数量
    • n_leaf_pages:此时stat_value显示叶子节点的数量
    • n_diff_pfxNN:显示索引字段上唯一值的数量,这里需要特殊说明:

1 主键索引与唯一索引 例如上面结果中index_name = PRIMARY时:

1) index_name = PRIMARYstat_name = n_diff_pfx01stat_value代表主键索引中第一列distinct之后的数量,从上面的例子我们看到stat_value是1,因为a这一列的值都是(1)

2) index_name = PRIMARYstat_name = n_diff_pfx02stat_value代表主键索引中第一列和第二列distinct之后的数量,从上面的例子我们看到stat_value是5,因为a,b两列存在的值是(1,1)(1,2)(1,3)(1,4)(1,5)

3) stat_description中我们可以看到是那几个列的信息

4) n_diff_pfxNN以此类推

2 非唯一索引不同的地方是在原有的列之后会添加上主键索引,这样说可能比较难理解,针对上面查询出来的记过下面详细说明下:

1) 根据表结构定义我们知道i1是一个非唯一索引,是由(c,d)两个列组成的。我们根据上面的结果可以看到除了n_diff_pfx01,n_diff_pfx02又多出来了n_diff_pfx03,n_diff_pfx04,通过stat_description我们可以看到n_diff_pfx03,n_diff_pfx04是在原有的(c,d)两列上又多出了(c,d,a) (c,d,a,b)这里就是将主键索引添加到了这里。

2) 例如n_diff_pfx03stat_value是2 代表的就是在原有的非唯一索引上添加了主键索引的第一列(a), 这个时候distinct之后的值是2 所存在的值就是: (10,11,1) (10,12,1)

通过这个表我们可以查看索引选择性如何,并且可以看到组合索引中每一列选择性如何,还可以计算索引的大小:

图片描述

总结

数据库中的一些系统表对DBA是非常重要的,可以帮助我们排查问题、性能分析、去更好的了解一些机制。

innodb_table_statsinnodb_index_stats两张表我们可以了解统计信息、计算索引的大小、索引的选择性如何,也可以做到监控中。

通过5.7的MySQL中添加了Sys Schema也就是让大家不用通过去查看代码的方式去排查各种问题、故障处理等,可见对系统表的学习在日后会更重要。

【参考资料】

作者: 董红禹,沃趣科技(woqutech)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL统计信息相关表介绍 的相关文章

  • 将此 MySQL 查询转换为 PyGreSQL

    我正在开发一个 Ruby 应用程序 它使用 mysql 函数 XOR 和 BIT COUNT 不过 我现在需要在运行 PyGreSQL 的 Heroku 上运行该应用程序 我找不到任何可以帮助我的 PyGreSQL 文档 那么任何人都可以翻
  • 1:1 关系中的双向外键约束

    我正在使用 MySQL 数据库 在我的关系数据模型中 我有两个相互 1 1 关联的实体 在我的架构中 通过将 FK 字段放入两个表之一中来建立 1 1 关系 该字段与另一个表的 PK 相关 两个表都有 PK 并且都是自动递增的 BIGINT
  • 创建rest api url以连接mysql数据库

    我想学习如何创建一个rest api url 以便我可以使用该url获取信息并将信息发布到我的mysql数据库中 谷歌搜索了很多并阅读了各种文章 但没有找到任何精确的内容可以学习 所有内容均以 about api 开头 以已创建的其余 ur
  • 未知的表引擎“InnoDB”

    最近 我发现如果我有好的硬件 我可以最大限度地提高 mysql 的性能 由于我一直在使用 InnoDB 所以我在 my ini 中添加了额外的配置 以下是新添加的配置 innodb data file path ibdata1 10M au
  • mysql:返回右侧第一个出现的子字符串? (子字符串?!)

    有没有办法返回sql中字符串右侧第一次出现的空格 我想你正在寻找类似的东西SUBSTRING INDEX http dev mysql com doc refman 5 0 en string functions html function
  • MySQL 选择第一个字符在哪里

    如何选择单元格的第一个字符并使用它来定义返回的内容 看看MySQL 字符串 和 控制流 功能 http dev mysql com doc refman 5 1 en functions html 例如 SELECT IF LEFT myF
  • MySQL 和 MariaDB 数据库有什么区别?

    我已经使用 XAMPP 很长时间了 很惊讶 XAMPP 已经从 MySQL 切换到了 MariaDB https www apachefriends org index html https www apachefriends org in
  • 安装后步骤未成功完成 MySQL Mac OS Sierra

    pyEnv Anants MacBook Pro litibackend anantchandra brew postinstall mysql gt Postinstalling mysql gt usr local Cellar mys
  • MySQL 使用 DATE_ADD 设置 DATE 列的默认值?

    我正在尝试使用表达式将 DATE 列添加到具有 DEFAULT DATE 值的表中 ALTER TABLE wp ezts project params ADD est completion DATE NOT NULL DEFAULT DA
  • 插入 Mysql 表时防止 Json 排序

    在发送 AJAX 请求时 Json Content 的重新排序已经是一个已知问题 但我不知道在将 Json content 插入 JSON 类型的 Mysql 表时也会发生同样的情况 在这种情况下 mysql 服务器在保存之前也会对其内容进
  • MySql 复合索引

    我们使用 MySql 作为我们的数据库 以下查询在 mysql 表 大约 2500 万条记录 上运行 我在这里粘贴了两个查询 查询运行得太慢 我想知道更好的复合索引是否可以改善这种情况 你知道最好的综合指数是什么吗 并建议我这些查询是否需要
  • binary_log_types.h:没有这样的文件或目录

    我正在编译一个小型 mysql C 项目并且 遇到以下错误 C Program Files x86 MySQL MySQL Server 5 7 include mysql com h 22 30 fatal error binary lo
  • PDO 连接字符串:最好的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想使用 php pdo 制作一个后端应用程序 我发现了很多不同的方法来处理 PDO 连接字符串 我想知道使用 pdo 执行连接字符串的最佳方法
  • 在 Java Web 应用程序中获取 DataSource 资源

    我的 context xml 文件中有以下资源标记
  • MySQL 错误“连接过多”

    我正在将 MySQL 5 0 用于由 GoDaddy linux 托管的网站 我正在对我的网络应用程序进行一些测试 突然我注意到页面刷新速度非常慢 最后 经过漫长的等待 我到达了一个页面 上面写着 MySQL 错误 连接太多 它指向我连接到
  • PhpMyAdmin 导出不包括 mysqldump 中的主键

    用PhpMyAdmin导出同一个表的结构 DROP TABLE IF EXISTS test apprentis CREATE TABLE IF NOT EXISTS test apprentis a id smallint 10 NOT
  • MYSQL 中当前行上日期之前(并包括该日期)的所有行的总和

    重要的是要知道在查询期间日期是未知的 因此我不能只硬编码 WHERE 子句 这是我的桌子 Date ID Customer Order Count 20150101 Jones 6 20150102 Jones 4 20150103 Jon
  • 插入MYSQL时自动初始化GETDATE()

    类似问题 https stackoverflow com questions 17700239 mysql column automaticly current time of insert w3schools 也许有用的链接 http w
  • 如何读取 sql 查询到 pandas dataframe / python / django

    我在下面使用这个views py获取应用程序 from django db import connection def test request cursor connection cursor sql SELECT x n from ta
  • 使用 mariaDB 将 sql 转储文件安装到 docker 容器

    我刚刚学习 docker 的基础知识 但一直停留在从本地系统导入 SQl 文件上 我使用的是 Windows 10 并允许我的 docker 容器访问我的共享驱动器 我有一个位于 D 上的 SQL 文件 我想导入到从 docker hub

随机推荐

  • uni-app开发微信小程序的简要流程

    uni app开发微信小程序 开发uni app的技术条件就是微信小程序及Vue 不熟悉vue的同学要先学习了解一下 不熟悉小程序可以直接看uni文档 https uniapp dcloud io frame 其他博客 vue elemen
  • Markdown编辑器Typora标题自动编号

    Typora标题自动编号 Typora官方说明 正文中的各级标题自动编号 来到Typora的主题文件夹 打开Typora界面 点击左上角文件 偏好设置 外观 打开主题文件夹 添加一个名为base user css的文件 用记事本就可 复制以
  • 计算2的n次方的三种方法(C语言实现)

    C代码如下 1 include
  • Git第六讲 本地配置Git与中文乱码解决

    配置本地用户和邮箱 git config global 命名 值 可以添加新值 如 git config global user name 你的用户名 git config global user email 你的邮箱 git config
  • umi3查看 “@umijs/preset-react“版本

    umi3在项目初始化时 对于 umijs preset react 官方默认安装版本为1 x 如下图 那怎么查看目前可以安装的版本都有哪些 输入命令 npm view umijs preset react versions 可用版本这么多
  • ChatGPT在哪些领域可以应用?

    ChatGPT是一种多功能的语言模型 可以在各个领域应用 它的强大之处在于其能力跨越多个领域 从文本生成到自然语言理解和对话处理 下面是一些ChatGPT的应用领域 1 对话系统 ChatGPT可以作为人机对话系统的核心 它可以接受用户的自
  • 稳压二极管的工作原理是什么?

    请问此图中稳压二极管的工作原理是什么 1 原理图 2 功能 只要从b到a流过一个大于或等于2mA的电流 反向电流 那么b和a两端之间的电压基本会稳定在稳压值附近 如果是从a流到b 稳压管就是一个普通的二极管 3 稳压管的类型 1N53XXA
  • hbase 启动时 Name or service not known -完美解决

    异常描述 Name or service not known 解决方式 root Hades kk bin vim etc hosts 在127 0 0 1 最后加上服务器hostname 即可 注意空格
  • GitLab HTTPS配置方法

    1 准备证书和密钥 需要获得SSL证书和密钥 您可以使用您已经购买的证书 或者使用免费的SSL自签证书 2 备份GitLab的配置文件 更改之前 备份GitLab配置文件 默认可以在 etc gitlab gitlab rb 中找到该文件
  • 《软件调试艺术》读后感一

    1 预备知识 在进入正题之前要对GDB有一个大概的了解 GDB能干什么 GDB如今的有用性还有多少 等问题 我们带着这种问题去书中探索 这样会使我们学到很多其它的东西 首先 我看一张图 这张图不是我画的 可是这张图基本涵盖了 软件调试艺术
  • 如果去掉vim里讨厌的beep声

    用过vim的人都知道 当光标移动到行首 行尾 或者文件头文件尾时 如果再继续移动光标 系统就会发出讨厌的beep声 声音还挺大 那么如何去掉beep声呢 今天在网上查了一下 其实很简单 只需要在 vimrc配置文件里增加一句话即可 set
  • .sh文件怎么写_Linux学习笔记:在linux下用打包发布可执行文件的两种方法

    我们在linux下编写代码时 会用到一些额外的库 动态或者静态 如小编在qt下写opencv的程序 是在电脑上 项目需求 需要将其移植到嵌入式板子上 小编这里提供一种简单的方法 将我们在电脑上开发好的程序 可以打包复制到其他只要是Linux
  • N-MOS和P-MOS驱动应用实例

    MOS在电路设计中是比较常见的 按照驱动方式来分的话 有两种 即 N MOS管和P MOS管 MOS管跟三极管的驱动方式有点类似 但又不完全相同 那么今天笔者将会给大家简单介绍一下N MOS管和P MOS管的工作原理 并结合自己实际的应用来
  • mysql根据指定字符拆分某个字段,并将数据分割成多条记录

    mysql根据指定字符拆分某个字段 并将数据分割成多条记录 表名 t course comment 表数据 拆分字段 studentids mysql语句 select distinct a id a teacherid a coursei
  • RxJava 事件流之聚合

    Aggregation 前面介绍了如何过滤掉不需要的数据 如何根据各种条件停止发射数据 如何检查数据是否符合某个条件 这些操作对数据流来说都是非常有意义的 本节介绍如何根据数据流中的数据来生成新的有意义的数据 本节的操作函数会使用源 Obs
  • cad打印表格出现一根竖线 表格_CAD 相关术语表

    下面是本公众号文章分类目录 点击标题文字可打开分类文章列表 安装卸载 异常 退出 文件及输入输出 基本操作技巧 设置及相关问题 界面和显示 快捷键 视图设置和调整 图层管理 颜色 线型 字体 文字样式和文字输入 标注 引线和标注样式 坐标系
  • 手把手带你用Java爬取网站数据

    1 Jsoup介绍 官网文档 https jsoup org Jsoup 是一款Java 的HTML解析器 可直接解析某个URL地址 HTML文本内容 它提供了一套非常省力的API 可通过DOM CSS以及类似于jQuery的操作方法来取出
  • 神经网络下采样、上采样——图文计算

    目录 下采样 上采样 空洞卷积 总结 下采样 4 4 的输入信号 在经过 3 3 的卷积核过滤过滤之后 产生了 2 2 的特征映射 公式 上采样 2 2 的输入信号 经过 3 3 的卷积核过滤 产生了 4 4 的特征映射 维度逐渐由小变大
  • 技术同学必会的 MySQL 设计规约,都是惨痛的教训

    在我们对数据库技术方案设计的时候 我们是否有自己的设计理念或者原则 还是更多的依据自己的直觉去设计 是否曾经懊悔线上发生过的一次低级故障 可能稍微注意点就可以避免 是否想过怎么才能很好的避免 下面规范的价值正是我们工作的检查清单 需要我们不
  • MySQL统计信息相关表介绍

    相信大家都了解MySQL中的统计信息 那么统计信息是存放在哪里呢 我们怎么去查看 在MySQL中提供了两个表记录统计信息的相关内容 分别是 innodb table stats与innodb index stats 下面就这两个表的内容 与