58 mysql 存储引擎之 MEMORY

news2024/9/20 20:44:35

前言

我们这里来看一下 MEMORY 存储引擎, 我们常见的那些 临时表什么的, 都是基于 MEMORY

在之前 我们也曾经调试过 相关内存临时表的信息

它主要是 使用 hp_scan, hp_find_record 等等 api 来操作内存中的信息 

我们这里基于 information_schema.TABLES 这张基于 MEMORY 的表来调试 

 

information_schema.TABLES 的创建语句如下 

CREATE TEMPORARY TABLE `TABLES` (
  `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
  `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
  `TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
  `TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
  `ENGINE` varchar(64) DEFAULT NULL,
  `VERSION` bigint(21) unsigned DEFAULT NULL,
  `ROW_FORMAT` varchar(10) DEFAULT NULL,
  `TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
  `AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `DATA_FREE` bigint(21) unsigned DEFAULT NULL,
  `AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
  `CREATE_TIME` datetime DEFAULT NULL,
  `UPDATE_TIME` datetime DEFAULT NULL,
  `CHECK_TIME` datetime DEFAULT NULL,
  `TABLE_COLLATION` varchar(32) DEFAULT NULL,
  `CHECKSUM` bigint(21) unsigned DEFAULT NULL,
  `CREATE_OPTIONS` varchar(255) DEFAULT NULL,
  `TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8

 

 

基于 MEMORY 的数据表的空间占用 

表格如下, 这是基于 运行时调试 拿到的数据

对于 varchar 部分字段, 预留了足够的空间, 长度 + 存储的空间, 这里是基于 utf8 编码, 因此存储长度 “1538 = 2 + (512 * 3)”, “193 = 1 + (3 * 64)”

对于 bigint 部分字段, mysql 内部是将其转换为 longlong 存储, 占用 8 字节 

对于 datetime 部分字段, mysql 内部是将其转换为 longlong 存储, 占用 8 字节, 但是这里实际上 仅仅占用了5字节, 应该是有一些 暂时没有看到的机制

最后还有一部分 mysql 的隐藏字段, 比如 hash_field, group_null_fields, null_pack_fields 等等 

这里仅仅只有 null_pack_fields, 占用 3 字节, 最终一条记录合计 9441 字节

1b1c735218c0164f5aff1816cf740a6e.png

 

TABLES 的各个 业务字段 的创建, 以及记录的计算 

99a6872c26676bcf96c2ede579ffab7c.png

加上 一部分 mysql 的隐藏字段, 比如 hash_field, group_null_fields, null_pack_fields 等等, 这里只有 null_pack 占用的空间, 三字节, 最终 reclength 为 9441

d6bbc78d0c0ebeffcfdee3fc2f434d44.png

 

基于 MEMORY 的数据表的数据填充 

填充是查询的时候 从内存中的相关数据结构中采集数据, 然后填充到目标 内存表 

5ff52e6b81b52b3a576390f14bbc9099.png

 

一级遍历的是可以访问的各个数据库 

fbdf44af3755b7b0f059974b5756f5ea.png

一级遍历的是可以访问的各个数据库下面的 所有可以访问的数据表

53aa64db97ac9639305e6b6283b53cfd.png

 

这里是对于 指定的数据表, 填充 TABLES 的各个列的相关数据 

27dbe690da9b315380d7922d036980be.png

然后将数据写到 MEMORY 中 

对于有 keyDef 内存表, 会记录 key -> position, 这里 TABLES 没有 keyDef, 仅仅是插入了数据 

de7fd2391c0c8882276fb9e828953cfb.png

 

 

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

对于这里 TABLES 数据表, 是查询该内存表中存放的所有记录 加上过滤条件

但是 在填充数据表的时候, 也已经做了 查询所需要的过滤

假设执行 “select * from `TABLES` where TABLE_NAME = 'tz_test_03';”

从这里可以看出 实际上这个逻辑过滤的条件还是在过滤

1cd95e322c90a6a972271fc655986fc1.png

 

这里的 partial_cond 为查询条件, 这里是有过滤的 

5619f6b1fa2aee2ee5240dc7673ca4f3.png

 

 

完 

 

 

 

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

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

相关文章

6.3.面向对象技术-设计模式

设计模式 设计模式创建型模型速记口诀 结构型设计模式速记口诀 行为型设计模式速记口诀 练习题 设计模式 上午2-4分,记忆点很多 要具体了解推荐看书籍《大话设计模式》 架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式&#xff0…

赛盈分销亮相AI科技大会暨亚马逊新增长大会,与企业共话跨境品牌发展新机遇!

八月开端,由知无不言与xmars和钱老师课堂联合主办的2024年AI科技大会暨亚马逊新增长大会在深圳宝安顺利开展,为期2天的跨境峰会吸引了上千位优秀的卖家朋友前来感受一场盛夏大狂欢。在本次跨境峰会里,邀请了多位不同领域的先锋人物&#xff0…

在国产芯片上实现YOLOv5/v8图像AI识别-【2.4】导出RKNN模型(第一部分:模型修改)更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频:https://www.bilibili.com/video/BV1or421T74f 基础…

挖矿木马攻破了服务器

最近被国外的挖矿木马攻破了服务器 根据非法登录,用 #last指令查看登录ip 首先删掉登录主机 #kill -9 pts/0 第二步 #top 看看什么占用cpu高 第三步杀死狂刷CPU的服务 过一分钟后,服务又开始狂刷cpu。 第四步根据pid查到服务地址 #systemctl status…

frameworks 之ServiceManager

frameworks 之ServiceManager 解析启动入口启动AIDL实现类客户端Bp发送讲解1. 获取 BpServiceManager创建代理类 ServiceManagerShim 返回调用对应AIDL方法调用驱动通知 服务端Bn接收讲解注册Binder回调监听Binder消息处理 备注 ServiceManager 作为android中的路由器提供服务注…

正则表达式扩展应用

使用扩展正则表达式 egrep 首先来看一条前面章节学习过的用来去除空白行和注释行的指令: grep -v ^$ regular_express.txt |grep -v ^# 可见,通常的 grep 指令需要使用两次管线命令。那么如果使用扩展正则表达式,则可以简化为:…

4K YouTube to MP3 Pro:跨平台音频提取与转换的好用工具

4K YouTube to MP3 Pro是一款专为追求高品质音频体验的用户设计的跨平台(支持Mac与Windows)音频提取与转换软件。该软件以其卓越的音频提取能力和简便的操作流程,在同类产品中脱颖而出,成为众多用户的心头好。 功能强大&#xff…

股吧评论自动采集工具推荐,一学就会

股市波动无常,股民情绪更是难以捉摸。但想象一下,如果能即时掌握东方财富网股吧里股民的热议话题与情绪倾向,那将对您的投资决策带来怎样的影响?本文将为您揭晓一款易于上手的股民评论自动采集工具,助您把握市场脉搏&a…

钉耙编程(5)

1008 猫咪们狂欢 分析&#xff1a; 会创建一个二分图 代码&#xff1a; #include <bits/stdc.h> #define ll long long #define INF 1e9 using namespace std; const int N10005; const int M100010; struct edge{ll v,c,ne; }e[M]; int h[N],idx1; int d[N],cur[N]; …

武汉流星汇聚:跨境电商行业的快速崛起者,以实力与口碑铸就辉煌

在跨境电商这片充满机遇与挑战的蓝海中&#xff0c;武汉流星汇聚电子商务有限公司如同一颗迅速升起的新星&#xff0c;以其独特的经营模式、专业的服务团队和卓越的业绩表现&#xff0c;在短短几年内实现了跨越式的发展&#xff0c;成为了业界内外瞩目的焦点。 自2019年成立以…

【重要通知】关于公众号、淘宝店铺、CSDN等平台更名的公告

尊敬的粉丝/用户朋友们&#xff1a; 您们好&#xff01; 感谢您一直以来对我们平台的支持与信任&#xff01;由于我们已经取得了作品登记证书&#xff0c;平台的名称和登记证书著作权人名称不一致&#xff0c;在打击盗版、防伪标识方面&#xff0c;对我们造成了一定的困扰 &am…

【漏洞复现】某赛通数据泄露防护(DLP)系统 NetSecConfigAjax SQL注入漏洞

0x01 产品简介 某赛通新一代数据泄露防护系统&#xff08;简称 DLP&#xff09;&#xff0c;以服务企事业单位进行数据资产梳理、数据安全防护为目标。系统采用平台化管理&#xff0c;将终端DLP、网络DLP、邮件DLP、存储扫描DLP、API 接口DLP 进行统一管理&#xff0c;模块化控…

共话肿瘤免疫壮丽里程 —— I-O Asia亚洲肿瘤诊疗与药物创新峰会9月广州启程

在2024年的今天&#xff0c;癌症的阴影依然笼罩着全球&#xff0c;它以其无声的侵袭&#xff0c;成为威胁人类健康的隐形杀手。根据国际癌症研究机构&#xff08;IARC&#xff09;的最新数据&#xff0c;全球癌症的发病率持续上升&#xff0c;预计在未来几年内&#xff0c;新发…

事务性邮件接口API如何集成以实现自动化?

事务性邮件接口API有哪些优势&#xff1f;邮件接口API集成方法&#xff1f; 通过集成事务性邮件接口API&#xff0c;企业可以实现邮件发送的自动化&#xff0c;提高效率&#xff0c;增强用户体验。AokSend将探讨如何集成事务性邮件接口API以实现自动化&#xff0c;并提供一些最…

仓储物流管理系统是什么?

仓储物流管理系统&#xff08;Warehouse Management System, WMS&#xff09;是一种专门设计用于管理和优化仓库操作的先进软件解决方案。这类系统的主要目的在于帮助企业在其仓库内更加高效地处理货物的接收、存储、拣选、包装及最终发货等一系列复杂的流程。以下是一些该系统…

Python 爬取网页水务数据并实现智慧水务前端可视化

提示&#xff1a;本文爬取深圳市环境水务集团有限公司的公开数据作为数据样例进行数据分析与可视化。 文章目录 一、爬虫二、对爬取的数据进行数据库、excel的存储与数据处理1.代码实现 三、应用Flask框架将后端获取数据后渲染到前端四、前端Echarts的使用1.下载echarts.min.js…

RHCA III之路---EX436-10

RHCA III之路---EX436-10 1. 题目2. 解题3. 验证 1. 题目 2. 解题 nodea上执行 pcs constraint location cluster436 prefers nodeb.private.example.com pcs constraint location cluster436 avoids nodea.private.example.com3. 验证 pcs resource curl 172.25.250.80

SAP通过代码函数创建定制/工作台/副本请求创建

注意事项&#xff1a;会跟标准的一样创建完毕会跳出来框框 DATA iv_new_request_type TYPE e070-trfunction. DATA es_new_request TYPE trwbo_request_header. DATA et_new_tasks TYPE trwbo_request_headers. DATA ev_request_changed LIKE trpari-w_v…

Nginx 学习总结

Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。 一、Nginx的特点 高性能&#xff1a;Nginx使用事件驱动模型&#xff0c;可以同时处理大量的并发连接&#xff0c;而且在高负载和大流量情况下仍然能够保持良好的性能。官方测试能够…

音乐格式amr如何转换为mp3?新手小白也能学会的音频格式转换方法!

按照现在的技术发展&#xff0c;这绝对不是什么复杂的问题。现在市面上有很多简易的转换工具可以解决&#xff0c;无需学习成本&#xff0c;0基础就能学会并解决&#xff01; 更多了解&#xff1a;牛学长转码大师 大家在办公中可以应用到的文件格式越来越多了&#xff0c;利用不…