一文讲清,MySQL数据库一行数据在磁盘上是怎么存储的?
Hollis
共 2847字,需浏览 6分钟
·
2021-10-17 09:11
数据库给使用者最直观的感觉,就是库、表、行、字段,这些概念都是逻辑上的。前面我们深入讲解了Buffer Pool的内部原理,它的基本存储单位是默认大小为16K的页。每页都保存了一行一行的数据。我们按照数据页为单位把磁盘上的数据加载到内存的缓存页里来,也是按照页为单位,把缓存页的数据刷入磁盘的数据页中。
而我们常常听到数据页、数据区、表空间这些名词,其实这些名词是物理层面上的概念。我们不经要问,库、表、行、字段,这些逻辑上的概念是如何对应到物理层的概念上的呢?我们查询一行数据,是如何找到条数据所在的数据页的呢?
接下来,笔者用几篇文章,讲解下MySQL的表空间、数据区、数据页这些概念,当大家明白搞明白这些东西后,就自然理解上面的问题了。
行格式
行格式即行记录的物理存储格式,决定了这张表数据的物理存储方式,会影响crud性能。
指定行格式
CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称;
ALTER TABLE 表名 ROW_FORMAT=行格式名称;
InnoDB 包含以下四种行格式
Compact Redundant Dynamic Compressed
,VARCHAR(20),CHAR(1),CHAR(1),插入一行数据:hello, ni, hao, a, b。
CREATE TABLE user (
name VARCHAR(10)NOT NULL,
address VARCHAR(20),
gender CHAR(1),
job VARCHAR(30),
school VARCHAR(50)
)ROW_FORMAT = COMPACT;
记录头信息详细如下表所示,有的暂时没有用到,可以暂时不用深究它。
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论