数据库 & 文件系统
存储引擎把表存储在磁盘上,操作系统用文件系统来管理磁盘,所以像 InnoDB 、 MyISAM 这样的存储引擎都是把表存储在文件系统上的。
当需要读取表中的数据时,存储引擎从文件系统中读取数据并返回
当需要写入数据时,存储引擎将数据写入文件系统
数据目录 & 安装目录
安装目录 下的bin目录,有很多可执行文件
数据目录,是存储运行时产生的数据
SHOW VARIABLES LIKE ‘datadir’; 查看数据目录的位置
数据目录
1. 数据库在文件系统中的表示
每个数据库,都对应数据目录下的一个子目录(文件夹),使用
CREATE DATABASE 数据库名语句创建一个数据库的时候:
- 在数据目录下创建一个和数据库名同名的子目录
- 在子目录下创建一个名为db.opt的文件,这个文件中包含了该数据库的各种属性,比方说该数据库的字符集和比较规则。
2. 表在文件系统中的表示
1. 表结构
表名.frm 这个文件用于描述表结构
2. 表中的数据
不同存储引擎,存储数据的文件不同
1. InnoDB存储引擎如何存储数据
记录——页(包含多条记录)——表空间(文件空间,对应多个文件)
表空间:
1.系统表空间 ibdata1文件,可以存储表数据
在一个MySQL服务器中,系统表空间只有一份。从MySQL5.5.7到MySQL5.6.6之间的各个版本中,我们表中的数据都会被默认存储到这个 系统表空间。
2. 独立表空间 表名.ibd文件
在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间
2. MyISAM是如何存储表数据的
test.frm
test.MYD 数据文件
test.MYI 索引文件
视图在文件系统中,只会存储一个视图名.frm的文件