当前位置: 首页 > article >正文

59 mysql 存储引擎之 PERFORMANCE_SCHEMA

前言

我们这里来看一下 performance_schema 存储引擎, 我们常见的那些 general_log, slow_log什么的, 都是基于 performance_schema

它主要是 使用 ha_perfschema 下面 api 来操作 performance_schema 中的信息 

我们这里基于 performance_schema.variables_by_thread 这张基于 PERFORMANCE_SCHEMA 的表来调试 

这个 引擎和 MEMORY 引擎的差异在于, 这个没有一个专门的 临时存储表数据 的地方, 这个是 每一次迭代, 直接 读取的给定的内存数据结构的数据

MEMORY 引擎是将数据从 内存数据结构/磁盘/网络 上面读取, 然后 数据输入到了 这个真正存在的 “内存表”

 

performance_schema.variables_by_thread 的表结构创建如下 

CREATE TABLE `variables_by_thread` (
  `THREAD_ID` bigint(20) unsigned NOT NULL,
  `VARIABLE_NAME` varchar(64) NOT NULL,
  `VARIABLE_VALUE` varchar(1024) DEFAULT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8

 

 

基于 PERFORMANCE_SCHEMA 的数据表的数据输出 

这是一个直接迭代读取内存各种数据的一个存储引擎 

整体过程如下, 先调用 m_table->rnd_next 将下一个系统变量的数据读取到 m_row

然后在基于 m_table->read_row 将 m_row 中的数据转换到 字段列表 中

03ebedcd3d625cc5e93e2d4e88d95868.png

 

从 mysql 中内存中的数据结构将数据转换到 m_row 的处理如下 

7d3a033124f34dd6d00c7f340f4dd2bd.png   

将数据从 m_row 转换到 Field 列表, 分别填充 THREAD_ID, VARIABLE_NAME, VARIABLE_VALUE

56ea118c5f1b47a67e8bed8829d4fbd9.png

 

 

基于 PERFORMANCE_SCHEMA 的数据表的数据录入

这部分数据表是直接 运行时读取的相关内存结构的数据, 不需要将数据 插入到 PERFORMACE_SCHEMA 的表中 

类似于 linux 中的 proc 文件系统, 是一个逻辑上的 文件/数据表

 

 

 

 

 


http://www.kler.cn/news/336856.html

相关文章:

  • [含文档+PPT+源码等]精品大数据项目-基于python爬虫实现的大数据岗位的挖掘与分析
  • 什么是 SAP JCO
  • draw.io创建自定义形状
  • 联想服务器配置阵列、安装操作系统
  • 系统架构设计师-论文题(2021年下半年)
  • Midjourney零基础学习
  • [SpringBoot] 苍穹外卖--面试题总结--上
  • Java | Leetcode Java题解之第461题汉明距离
  • vivado 关于 UltraFast 设计方法
  • 使用前端三剑客实现一个备忘录
  • 计算机毕业设计 视频点播系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【FPGA】面试八股
  • 基于投影滤波算法的rick合成地震波滤波matlab仿真
  • 跨 VLAN 通信
  • mysql语句执行过程
  • SOMEIP_ETS_171: SD_Unicast_FindService
  • C/C++简单编译原理
  • 用java做一个简易版球球大作战
  • 4. Getter和Setter注解与lombok
  • 计算机毕业设计hadoop+spark天气预测 天气可视化 天气大数据 空气质量检测 空气质量分析 气象大数据 气象分析 大数据毕业设计 大数据毕设