1、MySQL工作原理
MySQL主要组件:
① Connectors:与客户端工具和其他编程语言中的sql 语句进行交互
② Connection Pool (连接池):管理缓冲用户连接,线程处理等需要缓存的需求
③ Management Serveices & Utilities:处理器/系统管理和控制工具
④ SQL Interface (SQL接口):接受用户的SQL命令,并且返回用户需要查询的结果。
⑤ Parser (解析器):SQL命令传递到解析器的时候会被解析器验证和解析。
主要功能:
a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,后面SQL语句的传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的,语句将不会继续执行下去
⑥ Optimizer (查询优化器,可以利用explain语法查询SQL语句的执行计划)
SQL语句在查询之前会使用查询优化器对查询进行优化(产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果) 他使用的是“选取-投影-联接”策略进行查询。
⑦ Cache和Buffer (查询缓存)
⑧ Engine (存储引擎)
1)连接器(connector)拿到程序请求,将请求暂时存在连接池(connection pool)中,并有处理器(Management Sercice&Utilities)管理。
2)当该请求从等待队列进入处理队列,管理器(Management Service&Utilities)会将该请求丢给SQL接口(SQL interface)
3)SQL接口(SQL interface)接收到请求后,它会将请求进行hash处理并与缓存(Cache和Buffer)中的结果进行对比,若匹配则返回缓存(Cache和Buffer)中的结果,否则继续完整流程。
4)SQL接口(SQL interface)把请求传递给解析器(Parser),解析器(Parser)判断SQL是否正确,正确则转换为数据结构,进行后续步骤,错误中断执行,返回
5)解析器(Parser)将数据结构传递给优化器(Optimizer),优化器(Optimizer)会产生多种执行计划,选择最优的执行计划执行
6)确定最优的执行计划后,SQL会交给存储引擎(Engine)来处理,存储引擎从存储设备中取得相应数据,原路返回给程序
附:参考博客:https://www.cnblogs.com/daijw/p/9250331.html
2、MySQL有哪些引擎
3、数据库一般用什么字段作为索引
4、mybatis工作原理
5、引入小公司开发的开源组件,产生了bug怎么办?当初怎么考虑的?
6、Linux,查看进程用了哪些端口号,如何查看建立的连接
7、Linux上可以生成Excel文件么
8、如何在jvm启动时提高某个应用的内存
9、数据库优化
10、kafka原理
11、对springboot有哪些了解?用过哪些注解。
12、springboot和spring的区别
13、springboot集成mybatis,如何开启驼峰命名法
14、了解过哪些新技术
15、long类型的字段,传到前台后面出现00怎么解决
16、将哪些数据缓存到redis里面,用户更改缓存的数据怎么办?
17、你参数与了项目的重构,基于什么考虑重构呢?你们项目重构前端使用了angular,花了多长时间学习呢?
原文:https://www.cnblogs.com/codewy/p/11574530.html