mysql组成
mysql一般由server层,存储引擎层组成。
server层主要包括连接器、分析器、执行器组成。
存储引擎层主要负责存储和查询数据,他是插拔试的。可以自由选择不同的存储引擎。一般会选用innodb,这是一种支持事务的高效存储引擎。
sql执行过程
1.一条sql由客户端发出,到达连接器,判断是否登录,是否有权限查询等,在到分析器进行词法和语法分析,生成语法树。再到优化器对sql进行优化,优化很复杂,会有各种计算最终以时间成本最少的sql胜出。最后到执行器,调用对应的存储引擎,执行sql。
2.先到buffer pool缓存池中去查,查不到呢,就去idb文件中查询数据所在的页数据,将一整页的数据加载到缓存池中,可以理解为是预读的原理。如果修改操做,将旧值写入undo日志中,用于回滚,更新缓存池中的数据,写redo日志,在哪页做了什么修改。意外宕机恢复缓存池中未写入磁盘的数据用的,这里是顺序写,可以提高性能。写入binlog日志,用于恢复磁盘意外删除的数据。在系统空闲的时候,以页为单位,将缓存池中的数据写入磁盘。
恢复数据:
binlog日志可用于恢复数据,可是binlog日志文件较大,不建议保存太多的文件。这时我们可以采用数据库备份和binlog一起来恢复数据。比如每天凌晨进行数据备份。binlog日志存储10天自动删除。数据恢复的前提是你要做数据备份还要开启binlog日志。
binlog日志读取
可以用mysqlbinlog查看binlog日志也可以恢复数据,参数不一样