数据库运维
记录DBA学习成长历程

MySQL物理存储结构

其中库的物理结构用文件系统的目录存储,比如我们的测试机中的/data/mysql下的mysql目录即是mysql里面的mysql库。
表也是存储在磁盘上,存储时区分于不同的存储引擎。(就像往Linux操作系统存的时候,也需要关注ext2,ext3,ext4,xfs不同的
文件系统类型。)mysql对于不同的存储引擎,表的存储方式是不一样的。

查看库名为mysql,表名为user的物理结构

[root@xiaoyong mysql]# ll /data/mysql/mysql
-rw-r----- 1 mysql mysql   10816 Oct  8 14:49 user.frm 列的相关信息(字段)
-rw-r----- 1 mysql mysql     396 Oct  8 15:27 user.MYD 数据行(记录)
-rw-r----- 1 mysql mysql    4096 Oct  8 15:27 user.MYI  索引信息
上面就是MyISAM存储引擎类型的表

InnoDB(mysql默认的存储引擎)的表

-rw-r----- 1 mysql mysql 8636 Apr 18 11:37 time_zone.frm
-rw-r----- 1 mysql mysql 98304 Apr 18 11:37 time_zone.ibd
time_zone.frm:存储列相关信息
time_zone.ibd:数据行(记录 )+索引

两个概念

linux文件系统物理结构概念 :同一磁道的扇区,同一柱面的扇区,即是连续的扇区(512字节 ),将连续的扇区分配给磁盘空间
可以提升IO速度,将连续的扇区格式化,分配成4kb的数据块block,1个数据块就是8个连续的扇区。数据块block也作为连续的,
比如把1G的硬盘格式化就是做成很多连续的4kb的block。其最终1G的硬盘会再分配innodb的节点,innodb就相当于目录,
辅助更好的读取block。
mysql物理结构概念:InnoDB引擎把idb文件做类似于格式化的动作,一个idb文件是一个表空间,即是一个表段,段的大小和磁盘
空间有关。mysql把段格式化为一个个的页,一个页16kb,是mysql中最小分配物理IO单元,一次性读或者取都是16kb.连续
的16kb的页称为区,是mysql分配单元。
一个表段由多个区组成,一个区通过1个或者多个连续的page页组成的。
段:1个表就是一个段(分区表除外)
区:连续的64个page,1M.
页:16KB,连续的4个block.

分区表

id  name  age
1    a     11
...
10.. z..  99..
数据行太多,索引高度太高,以一个列作为分区的条件,拆分中多张表,从物理角度看,一张表有多个段构成。
赞(1)
MySQL学习笔记 » MySQL物理存储结构