InnoDB 存储引擎的 架构
首先 InnoDB 存储引擎可以分为 内存结构 和 磁盘结构
1. 内存结构
缓冲池(Buffer Pool) 内存中的主要工作区域, 优化查询的性能
变更缓冲池(Change Buffer) 优化修改操作的性能
日志缓冲池(Log Buffer)
自适应哈希(Adaptive Hash Index) 进一步提升查询效率
2. 磁盘结构
系统表空间(System Tablspace)
独立表空间(File-Per_Table Tablespaces)
通用表空间(GeneralTablespaces)
临时表空间(TemporaryTablespaces))
撤销表空间(Undo Tablespaces)
// *************************** 上面保存的是真实的数据
// *************************** 下面保证数据安全
重做日志(Undo log)
双写缓冲区 (Doublewrite Buffer)
从MySQL实现的角度来思考这个问题,数据库的作用就是保存数据,用户的真实数据最终都会保存在磁盘上,在查询数据的过程中,如果每次都从磁盘上读取会严重影响效率,为了提高数据的访问效率,InnoDB会把查询到的数据缓存到内存中,当再次查询时,如果目标数据已经存在于内存中,就可以从内存中直接读取,从而大幅提升效率。
也就是说磁盘结构中的文件是用来保存数据实现数据持久化的,内存结构是用来缓存数据提升效率的。