通讯协议
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)状态,更新完成。