今天学习的是mysql的45讲,加深了我对mysql的认知.里面有很多核心概念,我总结一下
mysql的主要组件
mysql分为server层和存储引擎层,server层主要有
连接器: 用来管理对数据库的连接情况和权限验证情况
缓存: 管理查询缓存
分析器: 对SQL语句进行语义分析
优化器: 通过语义分析之后,优化器分析需要采用哪些索引,然后生成执行计划
执行器: 于存储引擎进行交互,并且获取到结果集
存储引擎: 相当于是mysql的插件,与server层分离,常见的innodb的存储引擎,mysqlSAM存储引擎,还有memory存储引擎
mysql的两个日志
- redo log
这个log是innoDB引擎自带的,也就是做更新操作的时候,并没有马上去更新磁盘中的数据,而是存入到redo log当中,等到系统资源不紧张的时候,会刷新到磁盘当中,这个redo log可以保证mysql异常重启的时候,数据还是准确的,所以称之为crash-safe
- binlog
这个binlog是记录数据库的逻辑操作,是在server层生成的,不能保证crash safe,通常主从同步的时候,就是采用的binlog
- 在更新一条数据的时候,记录日志这一块采用了2阶段提交,就是先prepare,然后写redo log ,server层bin log 写完之后,就调用存储引擎的事务提交功能
网友评论