概述
任何对Innodb表的更新,Innodb都会将更新操作转化为WAL(write ahead log)并写入日志文件,WAL中记录了修改的详细信息。WAL日志在事务提交时会保证被写入持久化存储设备以保证事务的可靠性,WAL技术是保证数据库可靠存储以及提升性能的最重要手段。本文将详细描述WAL日志在磁盘上的物理组织格式。
WAL文件
MySQL WAL日志是一组日志文件集合,它们在数据库实例创建时预创建,并在数据库运行中被循环使用。WAL文件大小和数目可以通过参数设置,见innodb_log_file_size 和 innodb_log_files_in_group 。
日志文件
每个WAL文件的前2048字节存放文件头信息。文件头后面是WAL内容,按照BLOCK为单位分割,BLOCK大小默认为512字节。日志文件布局如下图所示: