针对MySQL,数据最终以什么样的形式保存?以及数据保存在硬盘的什么位置?
1、MySQL的存储引擎
MySQL属于数据管理系统,其中包括数据库,负责存储数据;还有数据库访问管理的接口系统,负责管理数据库。
为了满足不同的业务需求,MySQL的数据库采用多种存储引擎进行数据存储。
2、存储引擎是什么?
存储引擎指定了表的存储类型,即如何存储和索引数据、是否支持事务等。同时,存储引擎也决定了表在计算机中的存储方式。
我的MySQL Server version为5.7,支持的存储引擎如下表,默认为InnoDB
3、InnoDB和MyISAM各自的基本特点和使用场合:
MyISAM:不需要事务处理,以访问为主的应用适合使用该引擎;
InnoDB:支持事务控制,比MyISAM占用更多的磁盘空间。适合需要进行频繁更新、删除操作,同时还对事务的完整性要求性比较高,需要实现并发控制的应用。
功能 | InnoDB | MyISAM |
支持事务 | 支持 | 不支持 |
支持全文索引 | 不支持 | 支持 |
外键约束 | 支持 | 不支持 |
表空间大小 | 较大 | 较小 |
数据行锁定 | 支持 | 不支持 |
4、为了实现特殊功能,可以指定某个表的存储引擎,因此表的存储引擎也可以被称为表类型
create table ‘myisam‘(id INT(4))engine=MyISAM;
5、MySQL的数据文件是怎样的?它是如何存放的?
不同的存储引擎下,数据文件有所不同。
a、数据文件的位置
不同操作系统数据文件的默认存储位置不同,本机:datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data
b、MyISAM类型的表文件中,数据文件有三种:
-
- .frm 表结构定义文件,该文件与存储引擎无关,都有的。
- .MYI 索引文件,存放MyISAM类型表的索引信息。
- .MYD 数据文件,存放表中的数据
c、InnoDB类型的表文件
- .frm
- ibdata1 数据文件,保存所有InnoDB类型表的数据