MYSQL执行流程
建立连接
- 连接协议:TCP/IP、Unix Socket
- 通信方式:半双工
发送请求
查询缓存(默认缓存不开启)
解析器
- 词法解析
- 语法解析
生成解析树
预处理
- 语义解析
得到新的解析树
优化器
- 选择开销最小的执行计划
查询执行引擎(执行器)
存储引擎
概念:存储引擎是组织数据存放的一种形式。
- MyISAM:只支持表锁;不支持事务;存储了总数量,count很快,插入比较快。
- InnoDB:支持事务;支持外键;支持行锁;聚簇索引。
MYSQL架构
更新语句
- buffer pool(默认128M),修改都是执行到buffer poll,此时数据不一致,叫脏页,会定期刷到磁盘中。
- page大小(16kb)
- change buffer:假如没有唯一性校验,会将变更缓存至change buffer
- merge:buffer刷到磁盘中
- log buffer:即将写入到redo log的缓冲区。刷盘时机:(默认1)每次事务提交刷盘到redolog磁盘文件。
crash-safe:用redo log(顺序I/O,比磁盘的随机I/O效率高)实现异常恢复。
redolog
1、InnoDB实现
2、page物理日志
3、大小固定48M,满了会刷盘
binlog
- 逻辑日志
- 主从
- 数据恢复