1. Mysql根本架构示意图
!
1.1 连接器
用户名明码登录胜利后,连接器会到权限表里查问登录账户的权限,
再次批改权限只有新建的连贯才会应用新权限
show processlist //查看所有连贯
wait_timeout //客户端无反馈超时断开工夫,默认为8小时
MySQL 在执行过程中长期应用的内存是治理在连贯对象外面的,这些资源会在连贯断开的时候才开释
如果内存占用太大,会被零碎强行杀掉
解决方案:
1.定期断开链接,程序里判断下执行过一个占用大内存的查问后,断开链接再重连
2.mysql5.7当前 ,能够执行mysql_reset_connection来初始化链接,复原到刚刚创立连贯的状态(此处存疑,有说此办法是C语言API调用)
2.查问缓存
拿到执行语句时,mysql会去判断是否最近执行过,如果缓存缓存中有执行后果,间接返回(查问语句需放弃一致性,且数据没有被批改过)
因为缓存生效性很强,故不举荐应用查问缓存,且8.0版本后无此性能
通过调整参数,能够按需应用,默认查问不实用缓存,指定查问应用
query_cache_type=demand //设置按需加载mysql> select SQL_CACHE * from T where ID=10;//应用查问缓存
3.分析器
分析器会对sql语句做解析
首先是词法剖析,辨认出字符串别离是什么,代表什么
其次是语法分析,判断是否满足mysql语法
4.优化器
优化器是在表外面有多个索引的时候,决定应用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连贯程序
5. 执行器
首先校验下登录账户对表T是否具备查问的权限(优化器之前也会调用precheck验证权限),
其次执行器会调用存储引擎接口扫描接口,并做扫描行数累加(rows_examined)