二话不说,先上图!

连接器
连接数据库的第一步就是对接连接器,连接器负责跟客户端建立连接、获取权限、维持和管理连接。
数据库长连接:
数据库短连接:
每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。
建立连接过程是比较复杂的,建议在使用中尽量减少建立连接的动作,尽量使用长连接
使用长连接的问题:
内存占用问题:MySQL在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放,所以如果长练级连接累积下来,可能导致内存占用太大,被系统强行杀掉。
解决办法
- 定期断开长连接
- MySQL5.7及之后版本,在每次执行一个比较大的操作后,通过执行
mysql_reset_connection来重新初始化连接资源查询缓存
当执行的是查询语句,建立完连接后,执行逻辑就会“查询缓存”,MySQL拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。有就直接返回,没有就继续后面的执行阶段,执行完之后结果会被存入查询缓存中。缓存格式
key-value:key是查询语句,value是查询的结果。缓存失效
只要有对一个表的更新,这个表上所有的查询缓存都会被清空,对于更新压力大的数据库来说,查询缓存的命中率会非常低,除非业务就是一张静态表,很长时间才会更新一次。
按需使用
设置参数:query_cache_type=DEMAND,查询语句使用SQL_CACHE显示指定:select SQL_CACHE * from T where id=10
注意:MySQL 8.0版本就直接将查询缓存的整块功能删除掉了
分析器 (词法分析、语法分析)
如果查询没有命中查询缓存,就要开始真正执行语句了,执行语句MySQL要知道你打算做什么。
词法分析
分析器先做“词法分析”,你需要识别出SQL里面的字符串分别是什么,代表什么,例如分析出“select”关键字,这是一个查询语句。
语法分析
做完“词法分析”后,就要做“语法分析”根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个SQL语句是否满足MySQL语法规范,如果语句不对,就会收到You have an error in your SQL syntax的错误提醒。
