mysql查询逻辑
2021-02-26 17:50:34 8 举报
mysql select 执行过程
作者其他创作
大纲/内容
存储引擎
执行器
连接器
命中则直接返回结果
query_cache_type设置为DEMAND,默认sql语句都不使用查询缓存注:mysql8.0已经将查询缓存整个功能删除掉了connection_timeout:\"连接过程中\"的等待时间wait_timeout:\"连接完成后,使用过程中\"的等待时间,默认8小时wait_timeout:是非交互式连接的空闲超时interactive_timeout:是交互式连接的空闲超时,执行时间不计入空闲时间这两个超时设置得是否一样要看情况。慢查询日志中\"rows_examined\"字段,表示在这个语句执行过程中扫描了多少行mysql_reset_connection:mysql5.7以后可以使用此函数来重新初始化连接资源是mysql为各个编程语言提供的api,不是sql语句
操作引擎,返回结果
Server层
引擎层
管理连接,权限验证
Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
查询缓存
词法分析,语法分析
优化器
存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB
API接口调用
存储数据,提供读写接口
执行计划生成,索引选择
分析器
客户端
命令show processlist show warningsexplainexplain extended
从mysql5.5.5版本开始,InnoDB成为mysql的默认引擎连接器:负责与客户端建立连接,获取权限,维持和管理连接命令:mysql -h$ip -P$port -u$user -p 回车 输入密码查询缓存:将查询过的数据以key-value的形式存储到内存中,由于查询缓存失效频繁,不建议使用 将query_cache_type设置为DEMAND,默认不使用,使用时可以用关键字SQL_CACHE 显示使用(纯静态表可以使用)如:select sql_cache * from t where id=1分析器:未命中查询缓存的,执行语句,首先进行词法分析,语句法分析,语义分析,语法错误需要注意:use near 处的提示优化器:选择索引,确定各表连接顺序执行器:验证权限,调用引擎接口,返回结果
收藏
收藏
0 条评论
下一页