59 mysql 存储引擎之 PERFORMANCE_SCHEMA

news/2024/10/4 22:04:16 标签: mysql, storage, engine, performance

前言

我们这里来看一下 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.niftyadmin.cn/n/5690374.html

相关文章

通过freepbx搭建小型电话系统的过程

领导说公司的客服电话需要实现语音导航和非工作时间自动接听播放语音提示的功能。任务自然落到了伟大的程序员的头上,本着为公司节约成本原则遂百度了一番,找到了asterisk 和freeswitch两个比较流行的电话系统。经过对比和考虑公司的情况选择了asterisk系…

论文翻译 | Language Models are Few-Shot Learners 语言模型是少样本学习者(下)

6 更广泛的影响 语言模型对社会有着广泛的有益应用,包括代码和写作自动补全、语法辅助、游戏叙事生成、提高搜索引擎响应以及回答问题等。但它们也可能有潜在的危害性应用。GPT-3在文本生成质量和适应性方面优于较小的模型,并且增加了区分合成文本与人类…

使用Qt实现实时数据动态绘制的折线图示例

基于Qt的 QChartView 和定时器来动态绘制折线图。它通过动画的方式逐步将数据点添加到图表上,并动态更新坐标轴的范围,提供了一个可以实时更新数据的折线图应用。以下是对代码的详细介绍及其功能解析: 代码概述 该程序使用Qt的 QChartView…

Java报错输出的信息究竟是什么?

Java报错输出的信息究竟是什么? 本篇会带大家了解一下java运行时报错输出的信息内容,简单学习一下虚拟机内存中Java虚拟机栈的工作方式以及栈帧中所存储的信息内容 异常信息 当你的程序运行报错时,你是否会好奇打印出来的那一大坨红色的究竟…

mysql安装及使用·1

mysql安装环境变量配置pycharm连接服务初步使用 1.略 2.安装mysql之后进入到bin目录下, 双击输入cmd进入控制台窗口,输入mysql -uroot -proot(配置的账户)进入mysql 配置系统变量 新增bin目录到path中,cmd测试 3.…

关于 JVM 个人 NOTE

目录 1、JVM 的体系结构 2、双亲委派机制 3、堆内存调优 4、关于GC垃圾回收机制 4.1 GC中的复制算法 4.2 GC中的标记清除算法 1、JVM 的体系结构 "堆"中存在垃圾而"栈"中不存在垃圾的原因: 堆(Heap) 用途:堆主要用于存储对象实例和数组。在Java中…

Spring Boot新闻推荐:实时数据处理

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

jmeter学习(2)变量

1)用户定义的变量 路径:添加-》配置元件-》用户定义的变量 用户定义的变量是全局变量,可以跨线程组被调用,但在启动运行时获取一次值,在运行过程中不再动态获取值。 注意的是,如果在某个线程组定义了全…