前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL的基本架构

MYSQL的基本架构

作者头像
佛系编程人
发布2019-08-14 15:15:25
5280
发布2019-08-14 15:15:25
举报
文章被收录于专栏:佛系编程人

平时存储大量数据的时候我们一般会使用数据库对数据进行存储,但是大部分人只是处于“ 用 ”的层次,并没有往深层次的了解它的内部结构。相当于给你一个工具,你只是根据说明书使用这个工具,但是不了解这个工具的原理。那这样就不能更好的发挥工具的潜在价值所以本文就来简单的介绍一下MYSQL数据库的基本架构

MYSQL内部可分为两大部分:Server层和存储层

server层中大致包含了以下部分:

  • 连接器
  • 查询缓存
  • 分析层
  • 优化层
  • 执行层

首先介绍一下连接器

每次进入mysql前都需要登录,其实这就是在跟连接器打交道,你将登录信息给它检查,它提供你在该数据库操作中拥有的权限,我们所需要提供的登录信息如下所示:

代码语言:javascript
复制
mysql -h 主机ip -u 用户名 -p 密码

连接分为两种:长连接和短连接

长连接是指:连接成功后,如果客户端不断请求(执行sql语句),则一直使用同一个连接

短连接是指:每次执行完很少的几次查询就断开连接,下次查询需要重新建立新的连接

它们也各有各的优缺点:

运行效率

占用内存空间

长连接

当积累的数据大时,占用的内存是很大的

短连接

当长连接积累的数据大到内存装不下的时候,数据库会自动断开连接,也可以称为异常重启,但是这个问题也是有办法解决的:

  • 定期断开连接
  • 执行命令 mysql_reset_connection(重新初始化连接资源)

因为每次重新建立连接其实是很累的,效率也很低,所以一般都是使用长连接

有时候想查看数据库的连接状态,可以执行这个命令:

代码语言:javascript
复制
show processlist

有两种状态:空闲(sleep)和连接(query)两个

如果一定时间内一直没有操作数据库,那么它会自动断开连接,如果还要继续操作,就得重新建立新的连接

接下来介绍一下 查询缓存

缓存就是之前操作的信息暂时存储在一个地方,查询就是查找之前操作过的信息

那在数据库中,查询缓存就是查询之前执行过的sql语句,这样的运行效率会很高,但是也有一个缺点就是表已更新,它就失效了。。所以一般不用,除非那表是静态的,就是很长时间都不会更新的那种

为什么说查询缓存效率高呢?因为执行一个新的sql语句是需要很多流程的,当然使用的时候并没有表现出来。那现在就来一一介绍这些流程

当用户与数据库建立连接后,接下来就到了分析层。

分析层又分为两部分:词法分析和语义分析。

词法分析就是分析输入的mysql语句中的每个单词是什么意思,比如分析 show databases;这个语句。[show]是[查看]的意思,[databases]是指所有的数据库,所以这个语句就是用来查看所有数据库的。分析完每个词的意思后,接着就是判断是否符合mysql的语法,就跟咱学的英语是一样的。语法没问题后就继续往下执行,来到优化层。

优化层也分为两部分:判断使用哪个索引和决定各表的连接顺序

如果你的数据表中有很多个字段可以作为索引条件的话,优化层就会自动判断使用最适合的那个索引。如果有多个表进行关联,那它就会判断各个表的连接顺序。总的来说还是挺方便和智能的

万事俱备,只差执行,优化层结束后就来到了执行层。

开头我们说了,数据库是用来存储数据的,那肯定有存储引擎,存储引擎属于存储引擎层,而不是sercver层。

MYSQL的存储引擎大致有三种:innoDB(默认)、Memory、MylSAM。

那这么多存储引擎在哪里选择呢?答案就是执行层阶段,执行层的作用就是选择存储引擎,默认是innoDB,你也可以选择其他的,通过执行” engine= 存储引擎名 “来进行切换。除此之外,执行层还要确定该用户有没有执行该语句的权限,没有的话就会报错

最后,就是在存储引擎中对数据进行一系列操作啦,比如查询、插入、删除和修改等

以上大致就是Mysql的基本架构,希望可以帮助大家,下面是我学习时的思维导图,也是本文的知识结构

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 佛系编程人 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档