mysql提升(一)mysql基础构架(长连接和短连接、长连接内存占用问题)

 

 

mysql分为两层部分——server层和存储引擎层

 

server层

涵盖大多数核心服务,以及所有内置函数。所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图

 

连接器——负责客户端连接、获取权限、维持和管理连接

登录mysql的两种方式见——mysql(一)(安装、登录)

建立连接之后,如果没有后续操作,该链接就处于空闲状态。使用命令

show processlist

可以查看到空闲状态的链接处于sleep状态

 

数据库的长连接和短连接

  • 长连接——连接成功之后,客户端持续有请求,则一直使用同一个连接
  • 短连接——每次执行完很少的几次查询就断开连接,下次查询再重新建立一个

 

如何解决长连接过多导致mysql占据内存过大的问题

 

 

查询缓存——mysql8.0彻底废弃该功能

支持select语句时,首先查看查询缓存,如果之前查询过相同的语句,则查询结果会以key-value的形式存储在查询缓存中。在查询缓存中找到了对应的查询结果,就不用再去数据库中进行查询了。如果查询缓存中没有找到对应的结果,则进行后续的查询,并将查询结果存储到查询缓存中,用以方便后续的其他查询过程。

但是不建议使用查询缓存,因为

  • 查询缓存失效十分频繁——数据更新会导致查询缓存失效
  • 查询缓存命中率不高

 

 

分析器

 

分析器会首先对查询语句进行词法分析。你输入的是由多个字符串和空格组成的一条sql语句,mysql将识别出字符串分别是什么,代表什么

之后进行语法分析,判断输入的sql语句是否满足mysql语法

 

 

优化器

优化器在表中存在多个索引的时候,对使用哪一个索引进行选择。

在一个语句有多表关联(join)的时候,决定各个表的连接顺序

 

 

执行器

 

执行器进行执行前,会先判断你有没有执行权限。执行器的执行过程如下:

 

 

 

存储引擎层

存储引擎负责数据的存储和提取,其架构模式是插件式的,支持innodb、myisam、memory等多的存储引擎。

在create table时,可以指定存储引擎(engine=memory),如果不指定,则使用默认的innodb作为存储引擎。

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值