MySQL系列一 -- 前言

MYSQL大体来讲分为两部分:Service层,存储引擎层

(1).Service层:

连接器:管理链接,验证权限;

查询缓存:命中则直接返回结果,以key-value形式存放在内存中,如果表中出现更新操作,则缓存全部失效,在MYSQL8.0版本之后已经去掉这个模块;

分析器:词法,语法分析,检查你的sql是否有一场;

优化器:执行计划生成,索引选择;

执行器:操作存储引擎,返回结果;

(2).存储引擎层:

curd接口:存储数据,提供读写接口;

 

流程图:

MySQL系列一 -- 前言

 

MySQL的redo log(重做日志) 和 binlog(归档日志)

(1).redo log(InnoDB特有):物理日志,假如更新sql,会把sql放入redo log中先存放,然后再依次将redo日志中的sql语句写入磁盘;

(2).binlog(MySQL的Server层):逻辑日志,记录SQL语句的原始逻辑;如果误删表可以从这里恢复哦;

(3)redo log中的参数innodb_flush_log_at_trx_commit 设置为1,表示每次事务的 redo log 都直接持久化到磁盘;

(4)binlog中的参数sync_binlog 设置为1,表示每次事务的 binlog 都持久化到磁盘;