MySQL常见的存储引擎(InnoDB、MyISAM)data目录下(.frm,.myi,.myd)

查看支持的存储引擎

sql 复制代码
SHOW ENGINES;

show variables like '%storage_engine%'; 看你的mysql当前默认的存储引擎:

data目录

sql 复制代码
如果一个表同时有这3个文件,则存储引擎是myisam:
(1)*.frm--表定义,是描述表结构的文件。
(2)*.MYD--"D"数据信息文件,是表的数据文件。
(3)*.MYI--"I"索引信息文件,是表数据文件中任何索引的数据树。

1 InnoDB存储引擎 .frm .ibd

sql 复制代码
InnoDB存储引擎总支持AUTO_INCREMENT。自动增长列的值不能为空,并且值必须唯一。
MySQL中规定自增列必须为主键。在插入值的时候,如果自动增长列不输入值,则插入的值为自动增长后的值;
如果输入的值为0或空(NULL),则插入的值也是自动增长后的值;
如果插入某个确定的值,且该值在前面没有出现过,就可以直接插入。 
InnoDB还支持外键(FOREIGN KEY)。
外键所在的表叫做子表,外键所依赖(REFERENCES)的表叫做父表。
父表中被字表外键关联的字段必须为主键。
当删除、更新父表中的某条信息时,子表也必须有相应的改变,这是数据库的参照完整性规则。

1.1 存储 .frm .ibd

sql 复制代码
InnoDB中,创建的表的表结构存储在.frm文件中。 
数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

1.2 InnoDB的优势缺点

sql 复制代码
在于提供了良好的事务处理、崩溃修复能力和并发控制。 
支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。
如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。
Innodb支持事务和行级锁,是innodb的最大特色。 
缺点是读写效率较差,占用的数据空间相对较大。

1.3 InnoDB事务

sql 复制代码
innodb支持事务和行级锁,是innodb的最大特色。

事务的ACID属性:
	原子性(Atomicity)
	一致性(Consistency)
	隔离性(Isolation)
	持久性(Durability) 

并发事务带来的几个问题:
	更新丢失,脏读,不可重复读,幻读。 

事务隔离级别:
	读未提交(Read uncommitted),
	读已提交(Read committed),
	可重复读(Repeatable read),
	串行化(Serializable) show global variables like 'tx_isolation';

2 MyISAM存储引擎

sql 复制代码
MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。
MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。 
基于MyISAM存储引擎的表支持3种不同的存储格式。
包括静态型、动态型和压缩型。
其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;
压缩型需要用到myisampack工具,占用的磁盘空间较小。

2.1 MyISAM的表存储成3个文件 .frm .myd .myi

sql 复制代码
文件的名字与表名相同。拓展名为frm、MYD、MYI。
frm文件存储表的结构;
myd文件存储数据,是MYData的缩写;
myi文件存储索引,是MYIndex的缩写。

2.2 MyISAM的优势缺点

sql 复制代码
MyISAM的优势在于占用空间小,处理速度快。 
缺点是不支持事务的完整性和并发性。 
不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合 myisam只支持表级锁
相关推荐
a栋栋栋5 小时前
wsl 环境下用Docker 安装多版本MySQL
mysql·docker·容器
Jayyih6 小时前
嵌入式系统学习Day35(sqlite3数据库)
数据库·学习·sqlite
得意霄尽欢8 小时前
Redis之底层数据结构
数据结构·数据库·redis
hsjkdhs8 小时前
MySQL 数据类型与运算符详解
数据库·mysql
爱吃烤鸡翅的酸菜鱼10 小时前
【Redis】常用数据结构之Hash篇:从常用命令到使用场景详解
数据结构·数据库·redis·后端·缓存·哈希算法
李少兄10 小时前
IntelliJ IDEA 启动项目时配置端口指南
数据库·sql·intellij-idea
NineData10 小时前
NineData云原生智能数据管理平台新功能发布|2025年8月版
数据库·mongodb·云原生·数据库管理工具·ninedata·数据库迁移·数据复制
白云如幻10 小时前
【Java】QBC检索和本地SQL检索
java·数据库·sql
勘察加熊人11 小时前
python将pdf转txt,并切割ai
数据库·python·pdf
不良人天码星11 小时前
Redis单线程模型为什么快?
数据库·redis·缓存