概述
线程模型
- Master Thread
Master Thread是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(INSERT BUFFER)、UNDO页的回收等。
每秒一次的操作包括:
IO Thread
被存储引擎使用。innodb使用AIO模型(也就是NIO2)。
Purge Thread
事务被提交后用于回收undo页面。
存储引擎
innodb
一、Innodb有两种管理表空间的方法
+ 独立表空间:每一张表都会生成独立的文件来进行存储,每一张表都有一个.frm表描述文件,和一个.ibd文件。其中ibd文件包括了单独一个表的数据内容和索引内容。
+ 共享表空间:某一个数据库的所有表的数据和索引文件都放在一个文件下,默认的文件是.ibdata1文件,初始值是10M,默认是存放在数据文件的根目录下(mysql/var)。
二、两阶段锁定协议
物理存储
- .frm 与数据库引擎无关,都有这么个与表名同名文件。存储表的结构
- .myd 即 my data,表数据文件(MyISAM)
- .myi 即my index,索引文件(MyISAM)
- ibdata1 即表空间文件。(innodb)
- .ibd
- .log 日志文件。