MySQL系列一 -- 前言
MYSQL大体来讲分为两部分:Service层,存储引擎层
(1).Service层:
连接器:管理链接,验证权限;
查询缓存:命中则直接返回结果,以key-value形式存放在内存中,如果表中出现更新操作,则缓存全部失效,在MYSQL8.0版本之后已经去掉这个模块;
分析器:词法,语法分析,检查你的sql是否有一场;
优化器:执行计划生成,索引选择;
执行器:操作存储引擎,返回结果;
(2).存储引擎层:
curd接口:存储数据,提供读写接口;
流程图:
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 都持久化到磁盘;