(1)为什么会存在数据页的概念?
假设更新一条语句SQL语句 id=1,首先会从磁盘文件拿到这个数据加载到缓存页更新,然后又来了一条更新SQL语句 id=2,然后也从磁盘找到这个数据加载到缓存页进行更新,这样效率太低
。
所以MySQL把数据组成页的概念,每页大小16KB,每次加载至少加载一页进入缓存页,比如更新id=1的数据,就会把这条数据所在的一页数据加载到内存里去,这一页可能还包含id=2,id=3等
数据,如果再更新id=2就不需要从磁盘里读取了。
(2)一行数据在磁盘上是如何存储的?
这里涉及到一个概念,就是行格式。我们可以指定一个表的行格式存储,比如使用COMPACT格式
CREATE TABLE table_name(cloumns) ROW_FORMAT=COMPACT
ALTERT TABLE table_nam ROW_FORMAT=COMPACT
可以在建表的时候,指定一个行格式,可以后续修改,在这种格式下,每一行数据实际存储的时候,大概格式如下:
变长字段的长度列表,null值列表,数据头,column01的值,column02的值,,,
对于每一行数据存储时都会有一些头字段对这行数据进行一定的描述,然后再放上这一行数据的每一列的具体的值,这就是所谓的行格式,除了COMPACT以外还有其他几种大同小异的存储格式。