网站首页 > 技术文章 正文
mysql执行一条sql查询语句背后发生了什么呢?
我是李福春,我在准备面试,今天的题目是:
mysql的体系结构是怎样的?一条sql语句在mysql的体系结构中经历了什么?
答:
mysql体系结构
mysql的题解结构可以分成3个部分。列举如下:
mysql-client: 比如一个命令行,或者使用java的JDBC发送sql语句
mysql-server: 分为5个部分
连接器 (管理连接权限认证) 查询缓存 (命中则缓存起来) 分析器 (词法 语法分析) 优化器 (执行计划生成,索引选择) 执行器 (操作,返回结果)
mysql-存储引擎: 负责存储数据,提供读写接口(建表的时候指定MyISAM,InnoDB , Memory)
一条sql语句的执行过程
一条sql语句在mysql体系中的流转过程:
1,连接器: 首先打开命令行,指令:mysql -h${ip} -P${port} -u${user} -p ,输入密码。 使用连接器连接服务端; 连接成功之后,权限修改不会影响当前连接,连接的有效期默认是8个小时; 连接之后,执行过程中使用内存会持续增加,应该定时重置连接状态,防止oom;
2,查询缓存:如果查询比较频繁,按照key,value的方式放入缓存,命中缓存则直接返回; 如果更新比较频繁,建议不要使用查询缓存,query_cache_type=demand ,然后如果需要,可以在select后面带上 SQL_CACHE ; mysql8.0之后移除了查询缓存;
3,分析器:解析语法和词法,如果语法错误,会直接给出提示;
4,优化器:比如join语句执行方法的逻辑,如何选择索引等;
5, 执行器:核对执行权限,调用存储引擎的接口,按照语法循环执行,返回结果集。 可以观察 row_examined ,引擎扫描行数。
小结
本节介绍了mysql的体系结构。
然后跟踪了一条查询sql在体系结构中流转过程。
原创不易,转载请注明出处,让我们互通有无,共同进步,欢迎多沟通交流。
猜你喜欢
- 2024-11-19 MySQL常用的SQL提示
- 2024-11-19 MySQL 8.0-索引- 不可见索引(invisible indexes)
- 2024-11-19 数据库自学捷径-第七课 MySQL进阶-怎么提高搜索速度?索引
- 2024-11-19 Web端 SQL审核平台——Yearning Mysql
- 2024-11-19 MySQL性能管理及架构设计:SQL查询优化、分库分表
- 2024-11-19 深入浅出MySQL索引及优化分析,写出更高性能的SQL语句
- 2024-11-19 Linux运维面试sql语句
- 2024-11-19 图解MySQL:如何正确使用索引?
- 2024-11-19 看这篇就够了!MySQL 索引知识点超全总结
- 2024-11-19 SQL审核平台——Yearning Mysql
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)