基础知识

基础知识

一条sql是如何执行的
image.png

连接器

连接到数据库上的时候使用,

mysql -h$ip -P$port -u$user -p

show processlist 来查看当前的连接,如果command 是sleep就是空闲连接

客户端长时间没有动作会自动断开,默认时间是  8 小时 ,再查询就是
Lost connection to MySQL server during query
需要重新连接

长连接和短连接

长连接:连接成功不断开,再有请求一直用
短连接:连接查询就断开

选择哪种连接

选择长连接,因为连接的建立比较复杂,所以尽量减少连接的建立。

长连接会带来什么问题

mysql内存会涨的特别快。
原因:mysql执行中临时内存是管理在连接对象里的,只有连接断开后才会释放。
   如果长期积累下来,会导致 OOM

如何解决长连接的问题

  1. 定期断开。在程序里加个判断,一段时间后就断开重连
  2. mysql5.7 以后,mysql_reset_connection 命令初始化连接。不会断开和认证,会将连接恢复到初始状态。

查询缓存

查询语句和结果,采用key-value的形式存放,select 查询之前先看缓存,有的话直接返回。

为什么不建议使用缓存

失效频繁。有一个表有改动,这个表上所有的缓存都会清空。
对于更新频繁的,缓存命中太低

mysql有一种按需使用的方法。

select SQL_CACHE * from T where ID=10

mysql8.0正式移除了缓存模块。

分析器

词法分析:别出里面的字符串分别是什么,代表什么。
语法分析:输入的这个 SQL 语句是否满足 MySQL 语法

优化器

  1. 在表里面有多个索引的时候,决定使用哪个索引
  2. 多表关联(join)的时候,决定各个表的连接顺序

执行器

执行前先判断是否有权限
执行调用表的存储引擎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值