编程知识 cdmana.com

MySQL实战45讲 学习笔记(一)

MySQL 基础架构

MySQL可以分为server层和存储引擎两个部分
server包括 连接器(管理连接,权限验证)、查询缓存(命中直接返回结果)、分析器(词法分析,语法分析)、优化器(执行计划生成,索引选择)、执行器(操作引擎,返回结果)
存储引擎(存储数据,提供读写接口)

什么是长链接?

长链接是连接成功后,如果客户端持续有请求,则一直使用同一个连接。

什么是短连接?

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

如何选择?

建立连接的过程通常是比较复杂的,所以尽量使用长连接
但是,长连接可能会导致内存占用太大被系统杀掉。因为MySQL在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开时才释放

解决方案

  • 定期断开长链接
  • 在MySQL5.7之后,可以通过mysql_reset_connection 来重新初始化连接资源。这个过程不需要重连和重新做权限验证,但是会将连接恢复到刚刚创建完时的状态。

注意:

尽量不要使用查询缓存。
因为,查询缓存的失效非常频繁,只要有对一个表的更新,这个表上的所有查询缓存都会被清空。
可以将query_cache_type 设置成 DEMAND,这样对于默认的 SQL 语句都不使用查询缓存,对确定使用查询缓存的语句,可使用SQL_CACHE指定

mysql> select SQL_CACHE * from T where ID=10;

(在MySQL8.0之后 查询缓存功能已被删除)

一条查询语句的执行过程:

(查询语句执行前)通过连接器建立连接

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

MySQL接到请求后,会先在查询缓存中搜索(k-v),如果存在则直接返回结果;
如果没有命中查询缓存,分析器会先做“词法分析”。即:将“SELECT”识别出来,将字符串“T”识别为表名T…
做完“词法分析”后,就要做“语法分析”,判断该SQL语句是否满足MySQL语法
之后经过优化器处理: 如果表存在多个索引的时候决定使用哪个索引;或者在有多表关联的时候,决定各个表的连接顺序
然后执行器:开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误。如果有权限,打开表的时候,执行器就会根据表的引擎定义,使用其提供的接口。

版权声明
本文为[ordinaryBlog]所创,转载请带上原文链接,感谢
https://blog.csdn.net/kang2411212/article/details/120536401

Scroll to Top