mysql的层次
1、server层
(1)连接器:mysql -hXX -uroot -pXXX 这样就连接上了
(2)分析器:通过识别关键字(select,from,group等)分析是否符合语法,做一层过滤,不满足条件则不往下走
(3)优化器:如果存在索引及join操作,到底用哪个索引,join的顺序等都是优化器来实现
(4)执行器:执行前会先判断是否有权限操作表,如果有,将结果返回
2、存储引擎层
目前有innoDB,myisam,memory,从5.5之后默认都是INnoDB
长连接:如果一个sql比较长(join的多,查询的多)那么这个sql就是长连接
短连接:一个sql很快就返回了结果。
长连接的优点:建立连接要耗费资源,长连接减少耗费
长连接缺点:由于mysql在执行过程中临时使用的内存(比如子查询,缓存起来的内存)都在连接对象中管理,索引长连接内存会越来越大,无法释放,甚至出现OOM
总结:长连接弊大于利,尽量避免长连接
从5.7之后,执行mysql_reset_connection,可以做到将一个长连接后迅速释放内存
查询缓存:8.0之后mysql取消了查询缓存,弊大于利,每次好不容易缓存的结果,只要对表做了更新,所有的缓存都消失。