Mysql架构与执行流程

通讯协议

    TCP/IP

    Unix Socket

通信方式

    单工:数据单向传输

    半双工:数据双向传输,但不能同时传输

    全双工:数据双赂传输,可以同时传输

架构分层

  连接层:管理连接、权限验证等功能

  服务层:词法分析、语法分析、执行计划生成、索引选择、操作引擎、返回操作结果

  存储引擎层:存储数据,提供读写接口

架构分层

体系结构

连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件

优化组件、缓冲组件、插件式存储引擎、物理文件

体系结构

SQL查询执行流程

1、客户端发送查询请求

2、服务器优先检查查询缓存,如果缓存存在,则返回存储在缓存中的结果。

3、服务器端进行SQL解析、预处理、再由优化器生成对应执行计划。

4、执行引擎根据优化器生成的执行计划,调用存储引擎的API来执行查询

5、将结果返回给客户端。

SQL更新流程

update name = '张三'  where  ID = 2;

1、先找引擎取 ID=2 这一行。ID 是主键。如果 ID=2 这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返回;

2、拿到引擎给的行数据,把这个值赋上'张三',得到新的一行数据,再调用引擎接口写入这行新数据;

3、将这行新数据更新到内存中,同时将这个更新操作记录到 redo log 里面,此时 redo log 处于 prepare 状态。然后告知执行器执行完成了,随时可以提交事务;

4、执行器生成这个操作的 binLog,并把 binLog 写入磁盘;

5、执行器调用引擎的提交事务接口,引擎把刚刚写入的 redo log 改成提交(commit)状态,更新完成。

你可能感兴趣的:(Mysql架构与执行流程)