首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql体系结构

mysql体系结构

原创
作者头像
萧晚歌
修改于 2021-11-18 07:58:30
修改于 2021-11-18 07:58:30
1.1K00
代码可运行
举报
文章被收录于专栏:linux技术分享linux技术分享
运行总次数:0
代码可运行

mysql8.0体系结构

图来自网络
图来自网络

图上看mysql服务是一个c/s架构 它是用c和c++开发的

Connectors 端

可以通过,各种各样的客户端,链接mysql服务器 如mysql命令,各种apl等

server端

又分为很多模块

链接层

1提供链接协议 TCP/IP 本地的socket

2用户名密码验证(通过授权表做的验证数据库一启动,会把授权表加载到内存中 mysql.user mysql.db mysql.table_priv mysql.column_priv)

3提供链接线程

查看链接线程 show processlist;

查看后台所有线程 select * from performance_schema.threads\G

sql层

sql线程接收链接线程

预处理(lex) 语法,语义(语句是什么类型的),权限(访问的库或者表有没有权限) 检查

解析(yacc) 生成解析树 (ast抽象语法树)

优化 逻辑优化 基于关系代数的等价转换,在物理优化 参考统计信息(描述了,数据的分布,索引的一些状态,粗略记录表里有多少行)以及一些优化器算法,代价评估,生成执行计划(explain)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
统计信息说明
统计信息记录的是 表的状态, 如表名 数据行 数据分布情况 索引状态信息...
统计信息是mysql定期收集而来 通过一些参数指标 不是实时收集的
mysql.innodb_index_stats
mysql.innodb_table_stats
#问题 一条sql语句昨天运行的好好的(0.01) ,突然变慢了(2min)? 为什么
由于统计信息不准确造成的,不走索引造成的
可以通过命令强制重新收集 也有参数控制
analyze teble 库名.表名;
或者 optimize table 库名.表名; #命令锁表 谨慎使用

引擎层

io线程接收sql线程

mysql和磁盘打交道的类似于linux的文件系统

图来自mysql官网
图来自mysql官网

innodb存储引擎分为内存结构和磁盘结构

存储的宏观结构

在mysql中一个数据库,就在系统中就是一个目录

在mysql中一个表 对应操作系统中的一个.ibd文件(8.0)

在操作系统可以通过ibd2sdi 文件名 可以查看文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
表中记录的 数据行 + 元数据(表属性,表的列(列属性),表名)
mysql8.0表的存储方式 每张表的数据都存储在ibd文件中
mysql5.7表的存储方式
数据行 ibd文件
源数据 frm +ibdata1(总体) 文件
Online DDL 的时候会更加快速

8.0新特性了解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
metdata 结构变化
5.7版本问题
两套数据字典信息server层 .frm innodb数据字典
DDL无法原子化 (删除两张表的时候,不是一起执行的)
frm和innodb层会出现不一致
并发处理需要小心处理(MDL,dict_sys::mutex,dict_sys::rw_lock)
崩溃无法恢复
8.0新特性
支持事务性DDL,崩溃可以回滚,保证一致,
只保留一份数据字典信息,取消了frm数据字典
数据都放在的InnoDB表中
采用套锁机制,管理数据字典的并发访问(DML)
全新的plugin支持
8.0.17后加入clone plugin,更好的支持MGR InnoDB Clustre的节点管理
安全的加密方式改变
改变加密方式为caching_sha2_password
SSL 将支持到TLSv1.3版本.
用户管理及认证方式改变
改变授权方式
加入role角色权限
添加更多权限
cache&&Buffer的变化
取消了Query Cache
缓存的是查询的结果 会把你查询的语句做一个hash 结果做成key 如果你查询条件增加了 缓存就不会命中
mysql的查询缓存并非缓存执行计划,而是查询及其结果集,这就意味着只有相同的查询操作才能命中缓存,隐藏mysql查询命中率很低
oracle 缓存的是执行计划 减少了解过程.

mysql实例

mysqld守护进程 + Master Threa + Worker Threads + 预分配的内存

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql的内存结构
global buffers(全局)
innodb_buffer_pool(可以设置物理内存的%50-%75):数据缓冲区
innodb_log_buffer:日志缓冲区
key_buffer
table_cache
session buffers(每个会话独立使用)
read_buffer
read_fnd_buffer
sort buffer
join buffer
tmp table
binlog_cache

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql中的线程
master thread    作用核心后台进程,负责全局管理数据刷新和数据一致性处理
io thread        负责和磁盘io交互 (read io write io insert buffer log io) 相关参数inndbo_read_io_threads, inndbo_write_io_threads
Purge thread     作用 UNDO页回收 参数 innodb_purge_threads
page cleaner     作用 脏页刷新线程 默认1 最大64 参数 innodb_page_cleaners
other threads

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谷歌变坏了?Chrome 已成众矢之的
▷ 本文经授权转自:算法爱好者(id: AlgorithmFans )。未经许可,禁止二次转载。
养码场
2019/06/19
1.3K0
谷歌变坏了?Chrome 已成众矢之的
我们不再需要 Chrome?
十年前,浏览器的主要市场还在被微软的 IE 牢牢占据着。IE 作为 Windows 的默认浏览器,基本上控制了绝大部分人访问互联网的方式。
谭庆波
2019/03/18
6620
我们不再需要 Chrome?
不要让 Chrome 成为下一个 IE!
IE 的历史证明,如果一个浏览器占据绝对主导地位,那么就会带来一系列负面的连锁反应!当整个网络都以某一个浏览器引擎为标准时,那么开发人员很可能就会忽略其他浏览器,只针对主流浏览器支持的 CSS 和 JavaScript 功能集,而不会考虑在其他浏览器中测试交叉兼容性——且事实不止于此!现在的 Chrome 正在重蹈覆辙,开发者又该怎么应对呢?
龙哥
2020/06/04
6700
不要让 Chrome 成为下一个 IE!
Linux 基金会要接管 Chromium 了吗?
纵观浏览器的发展历程,有三个重要节点。第一个节点是网景公司成立,发布第一款商用浏览器 Netscape Navigator,拉开互联网走向大众的序幕。第二个节点是微软 IE 击败 Netscape Navigator,成为浏览器的新霸主,然后不思进取,拖慢了 Web 发展的进程。第三个节点是谷歌 Chrome 浏览器崛起,甚至微软也不得不屈服,放弃自家的浏览器引擎,基于 Chromium,开发新一代浏览器 Edge。
云水木石
2025/01/23
1100
Linux 基金会要接管 Chromium 了吗?
Web 开放性或遭重大打击!谷歌四名工程师推出 WEI 方案,可让广告拦截变成历史
最近,谷歌提出了一项名为“Web 环境完整性(WEI)”的提案,由其四名工程师撰写。这是一种确定浏览器是否可信的方法,有助于防范欺诈和其他不良行为。
深度学习与Python
2023/08/09
2740
Web 开放性或遭重大打击!谷歌四名工程师推出 WEI 方案,可让广告拦截变成历史
从 40% 跌至 4%,“糊”了的 Firefox 还能重回巅峰吗?
作者 | 丁广辉      责编 | 张红月 出品 | CSDN(ID:CSDNnews) Mozilla Firefox,通常简称为Firefox,中文名叫做火狐,是由Mozilla基金会及其子公司Mozilla公司开发的一款自由、开源的网页浏览器。2004年,Firefox首次发布就在9个月的时间内获得了超过6000万的下载量,之后的几年中也是一路高歌猛进。在2008年底,全球15亿在线人数中,有20%的人都在使用Firefox浏览器浏览网页,尤其是在印度尼西亚、马其顿、斯洛文尼亚等国家,上网的人中超过
用户1737318
2022/03/03
1.4K0
和谷歌一样,Mozilla 也在期待苹果终结 Webkit 规则
作者 | Thomas Claburn 译者 | 王强 策划 | 李冬梅 根据最新消息,考虑到苹果准备取消对竞争对手在 iOS 中使用 WebKit 浏览器引擎的限制,Mozilla 已经开始为这一天的到来提前做准备了。 Mozilla 几年前就做过了类似的实验,但是结果在当时并没有公开出来。时过境迁,2022 年 10 月 Mozilla 在存放 Firefox iOS 版代码的 GitHub 存储库中发布了一个问题,其中包含了一条对 GeckoView 的引用,而 GeckoView 是 Fi
深度学习与Python
2023/03/29
6770
和谷歌一样,Mozilla 也在期待苹果终结 Webkit 规则
这个曾领先于谷歌和微软的开源项目,为何盛极而衰?
Firefox 曾经风光无两,是最为成功的开源软件之一。它让 Internet Explorer 的主导地位首次受到挑战,而 Google Chrome 那会还只是“others”。
深度学习与Python
2021/09/22
6700
重磅!Flutter 2 来了!
今天,我们宣布 Flutter 2 正式亮相!作为 Flutter 的一次重大版本升级,Flutter 2 将帮助开发人员立足任意平台创建起美观、快速且能够轻松移植的应用程序。在 Flutter2 的支持下,您可以使用相同的代码库将原生应用程序发布至 iOS、Android、Windows、macOS 以及 Linux 五大系统阵营之上。此外,Flutter 2 还能够完美契合 Chrome、Firefox、Safari 以及 Edge 等网络浏览器,甚至可以被嵌入至汽车、电视与智能家居当中,借此带来最普遍、最具便携性的计算体验。
@超人
2021/03/18
1.8K0
重磅!Flutter 2 来了!
JavaScript深入浅出第5课:Chrome是如何成功的?
在上一篇博客中,我聊了一下JavaScript引擎V8的工作原理,顺其自然,接下来应该来聊聊渲染引擎Blink或者Chrome浏览器的工作原理。但是,这2个坑以后再填。
Fundebug
2019/08/08
6810
Web:你知道我这十几年是怎么过来的吗?!
1989 年 3 月 12 日,在瑞士的欧洲核子研究中心工作的蒂姆·伯纳斯-李向他的老板递交了一篇题目为“Information Management: A Proposal”的建议书。后来人们把这一天当作万维网 (WWW, World Wide Web) 诞生的日子。一晃三十年过去,web 早已成为这个世界重要的组成部分。
ConardLi
2022/04/08
7410
Web:你知道我这十几年是怎么过来的吗?!
HTML5定稿了,为什么原生App世界将被颠覆
2007年W3C(万维网联盟)立项HTML5,直至2014年10月底,这个长达八年的规范终于正式封稿。
用户7705674
2021/09/19
8180
咱们来聊聊什么是 Web
   浏览器最重要或者说核心的部分是 Rendering Engine,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。
Demo_Null
2020/09/28
1.1K0
咱们来聊聊什么是 Web
谷歌值得我们信任吗?
生活中貌似我们都逃脱不了谷歌的手掌心。 多年以前,两个踌躇满志的大学生将自己的研究项目变成了一个网站,而现在这个网站已经市值千亿,为我们提供方方面面的便捷服务,未来可能渗入我们生活的每一个毛孔。 2015年,谷歌这艘巨轮变身Alphabet重新起航,它不再只是一个搜索引擎了。旗下的Chrome浏览器已经拥有超过十亿用户,也超越了老牌霸主IE拿到了最大的市场份额。 Gmail也成为了最受欢迎的通用电子邮件客户端,备受大学生,公司职员和自由职业者的青睐。谷歌的文字处理工具,幻灯片制作软件和电子表格程序也让微软的
程序员互动联盟
2018/03/14
9940
谷歌值得我们信任吗?
不要重复发明轮子!谷歌:我偏要
在程序员的圈子里,有一句话广为流传:“Stop Trying to Reinvent the Wheel”,翻译成中文即为“不要重复发明轮子”。其核心意思是,对于一些已经成熟且高效的功能或模块,我们应当直接使用,而不是重复开发。
云水木石
2025/01/23
1640
不要重复发明轮子!谷歌:我偏要
目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto
浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。
用户7657330
2020/08/14
7.2K0
HTML5定稿:手机App将三年内消失
就像Apple成立前,HP的高层告诉沃兹:谁会在家里摆一台电脑呢?未来HTML5肯定会颠覆原生App。2007年W3C(万维网联盟)立项HTML5,直至2014年10月底,这个长达八年的规范终于正式封
用户7705674
2021/09/19
5140
语音AI革命十年,不忍看,不敢看!
过去10年彻底改变了人们对语音技术的看法。语音助手从最初的几家门店,发展到如今已融入人们生活的方方面面。为了概括十年来发生的一切,我们挑选了过去十年里每年发生的一件值得关注的事件,来突出和显示它们是如何在语音助手的发展和传播方面成为一个里程碑的。
新智元
2020/02/13
1.2K0
从 IE 到 Edge:我们跟微软浏览器团队聊了聊Web的过去和未来 | 中国卓越技术团队访谈录
作者 | Tina 策划 | 蔡芳芳 对资深 Web 开发者来说, <!--[if IE 6]>这行代码并不陌生。Internet Explorer 曾是 Web 2.0 的源泉,是 Internet 创新驱动力,历经了兴起和衰落,而后成为了 Web 开发者的痛点。2022 年 6 月 15 日,微软 IE 正式退役,在过去的 27 年里,IE 所经历的整个的生命周期其实也是互联网从萌芽到繁盛的历史。 接替 IE 的是 2015 年诞生的 Microsoft Edge,这是一款带有复兴使命的浏览器产品
深度学习与Python
2023/03/29
8080
从 IE 到 Edge:我们跟微软浏览器团队聊了聊Web的过去和未来 | 中国卓越技术团队访谈录
看了Chrome收集的个人数据,我发现谷歌被控涉嫌垄断不亏
姓名、通讯地址、邮箱、通讯录、位置、搜索历史、浏览历史、流量使用、用户信息、设备信息、支付信息。
FB客服
2021/04/16
1.7K0
看了Chrome收集的个人数据,我发现谷歌被控涉嫌垄断不亏
推荐阅读
相关推荐
谷歌变坏了?Chrome 已成众矢之的
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验