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只支持表级锁
相关推荐
hefaxiang26 分钟前
【MYSQL】mysql约束---自增长约束(auto_increment)
数据库·mysql
琴智冰26 分钟前
SpringBoot
java·数据库·spring boot
AAEllisonPang35 分钟前
Oracle 时间计算
数据库·oracle
m0_7164990635 分钟前
达梦8-数据守护集群主备故障实验和脑裂处理
数据库
小登ai学习1 小时前
简单认识 redis -3 -其他命令
数据库·redis·缓存
m0_687399841 小时前
QT combox 前缀匹配
开发语言·数据库·qt
计算机学姐1 小时前
基于微信小程序的调查问卷管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
vvvae12349 小时前
分布式数据库
数据库
雪域迷影10 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹11 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle