Mysql原理解析 - 基本架构
Mysql原理解析 - 基本架构
- 1、Mysql的基本架构图
- 1.1 连接器
- 1.2 查询缓存
- 1.3 分析器
- 1.4 优化器
- 1.5 存储引擎
1、Mysql的基本架构图
1.1 连接器
连接器负责跟客户端建立连接,获取权限、维持和管理连接
– 用户名密码验证
– 查询权限信息,分配对应的权限
– 可以使用show processlist查看现在的连接
– 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时
▪ 连接可以分为两类:
– 长连接:推荐使用,但是要周期性的断开长连接
– 短链接:
1.2 查询缓存
当执行查询语句的时候,会先去查询缓存中查看结果
之前执行过的sql语句及其结果可能以key-value的形式存储在缓存中
如果能找到则直接返回,如果找不到,就继续执行后续的阶段。
▪ 但是,不推荐使用查询缓存:
– 1、查询缓存的失效比较频繁,只要表更新,缓存就会清空
– 2、缓存对应新更新的数据命中率比较低
1.3 分析器
词法分析:Mysql需要把输入的sql字符串进行识别,解析每个部分代表什么意思
– 把字符串 T 识别成 表名 T – 把字符串 ID 识别成 列ID
▪ 语法分析:
▪ 根据语法规则判断这个sql语句是否满足mysql的语法,如果不符合就会报错“You have an error in your SQL synta”
1.4 优化器
在具体执行SQL语句之前,要先经过优化器的处理
– 当表中有多个索引的时候,决定用哪个索引
– 当sql语句需要做多表关联的时候,决定表的连接顺序
– 等等
▪ 不同的执行方式对SQL语句的执行效率影响很大
– RBO:基于规则的优化
– CBO:基于成本的优化
1.5 存储引擎
ibdata:innodb默认情况下,所有的数据文件的表空间 --> 修改如下
innodb将每一个表的数据,单独使用一份数据文件保存
db.opt:每一个数据库的结构文件
Mysql原理解析 - 基本架构相关推荐
- 【MySQL原理解析】01. 一条SQL查询语句是如何执行的
这是[MySQL原理解析]的第一篇文章,MySQL我看了很多的书与教程,对其原理有一定的理解,一直想写一系列的文章来把MySQL的原理给讲清楚,一直没有时间写,今天算是个开头吧.万事开头难,咱们先破了 ...
- Tomcat 架构原理解析到架构设计借鉴
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...
- mysql新增列并同时增加数据_图解MySQL | [原理解析] MySQL 为表添加列 是怎么quot;立刻quot;完成的...
在上一期图解 图解MySQL | MySQL DDL为什么成本高?中,我们介绍了: 传统情况下,为表添加列需要对表进行重建 腾讯团队为 MySQL 引入了 Instant Add Column 的方案 ...
- mysql新增字段位置_图解MySQL | [原理解析] MySQL 为表添加列 是怎么quot;立刻quot;完成的...
在上一期图解 图解MySQL | MySQL DDL为什么成本高?中,我们介绍了: 传统情况下,为表添加列需要对表进行重建 腾讯团队为 MySQL 引入了 Instant Add Column 的方案 ...
- 大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)...
大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)-杨传辉 在线阅读 百度网盘下载(89hy) 书名:大规模分布式存储系统:原理解析与架构实战 (大数据技 ...
- Mysql原理解析 - 索引文件的存储结构
Mysql原理解析 - 索引文件的存储结构 前言 局部性原理 磁盘预读 索引是什么? 1. MSQL为什么索引选择B+树? 1.1 哈希表hash 简介: 局限性: 1.2 二叉树 简介: 局限性: ...
- 《分布式存储系统:原理解析与架构实战》.pdf
关注"Java后端技术全栈" 回复"面试"获取全套面试资料 分布式存储系统,将数据分散存储在多台独立的设备上. 传统的网络存储系统采用集中的存储服务器存放所有数 ...
- mysql 写磁盘_图解MySQL | [原理解析] MySQL insert 语句的磁盘写入之旅
作者及简介: 黄 炎,爱可生首席技术官: 王 悦,爱可生研发团队成员,负责数据库管理平台相关项目的开发和故障排查,好奇 MySQL 技术原理及各类数据库实现方案. 本文来源:转载自公众号-图解 MyS ...
- 【Tomcat 】Tomcat 架构原理解析到架构设计借鉴
Tomcat 发展这么多年,已经比较成熟稳定.在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人』,难道说如今就没有必要深入学习它了么?学习它我们又 ...
最新文章
- 区块链学堂:区块链引子
- 他们用卷积神经网络,发现了名画中隐藏的秘密
- JAVA语法——经典题目01
- 女朋友掉水里,各类程序猿怎么救?
- H264 解码耗时分析
- 自定义GridView 介绍
- 将毫秒转换_上海科大:超强电镜技术!原子级分辨率,毫秒级可视化
- Android开发之点九图的制作说明
- SSIS:错误信息总结
- 打造IOS移动渗透测试平台
- Python实现邮件发送
- linux 邮件服务器 并给外网发送邮件,Linux下判断公网IP是否改变,并发送邮件通知...
- 用 AlphaGo Zero 参加阿里巴巴全球调度算法大赛
- Java 函数式编程的妙用
- Google(谷歌)博客搜索中文测试版发布
- OSChina 周一乱弹 —— 老夫聊发少年狂
- 华为mate30和mate30pro的区别
- WIN32 完整的开发流程
- HQChart使用教程30-K线图如何对接第3方数据20-信息地雷公告数据
- 初尝Windows8预览版