InnoDB下数据存在什么介质上?
存在硬盘上。硬盘可以是机械硬盘,也可以是固态硬盘。也存在内存中。
InnoDB下数据是如何在硬盘中组织的?
结论:表数据存在.ibd文件中。创建一张表,就会在磁盘中创建一个.ibd文件。 而一个.ibd文件对应一个表空间。所以可以说,InnoDB的磁盘结构,是由表空间组成的。
表数据——存在——>.ibd文件——对应——>表空间
表空间也分类,有独立表空间和共享表空间。 独立表空间里只会存一张表的数据; 共享表空间里可以存多张表的数据;
注:
1、InnoDB的表默认使用独立表空间。如果想使用共享表空间,就把file_per_table设置为0。
2、如果要把buffer pool中的数据同步到磁盘文件,可以不经过页面缓存直接写入。
3、如果要把log buffer里的数据同步到磁盘文件,必须先存进页面缓存,然后页面缓存会选择合适的时间将数据刷入磁盘。
InnoDB下数据是如何在内存中组织的?
InnoDB在内存中占用了三大块:buffer pool、log pool、page cache(页面缓存)。
buffer pool
有啥用?
缓存磁盘中的数据。
为什么需要buffer pool?
执行器在执行SQL语句时,会调用存储引擎层中的InnoDB实现的接口来完成数据库读写操作。既然是数据库读写,就要发起磁盘IO。 众所周知磁盘IO很耗性能,所以可以在存储引擎和硬盘文件之间设一层缓冲,也就是buffer pool,存在内存中。
page cache
有啥用?
帮助内存把脏页同步到磁盘。
InnoDB下数据的组织结构是什么?
B+树
InnoDB支持哪些数据库功能?
事务、行级锁、外键、数据缓存等等。