本文主要是介绍MySQL常见的存储引擎(InnoDB、MyISAM)data目录下(.frm,.myi,.myd),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
查看支持的存储引擎
SHOW ENGINES;show variables like '%storage_engine%'; 看你的mysql当前默认的存储引擎:
data目录
如果一个表同时有这3个文件,则存储引擎是myisam:
(1)*.frm--表定义,是描述表结构的文件。
(2)*.MYD--"D"数据信息文件,是表的数据文件。
(3)*.MYI--"I"索引信息文件,是表数据文件中任何索引的数据树。
1 InnoDB存储引擎 .frm .ibd
InnoDB存储引擎总支持AUTO_INCREMENT。自动增长列的值不能为空,并且值必须唯一。
MySQL中规定自增列必须为主键。在插入值的时候,如果自动增长列不输入值,则插入的值为自动增长后的值;
如果输入的值为0或空(NULL),则插入的值也是自动增长后的值;
如果插入某个确定的值,且该值在前面没有出现过,就可以直接插入。
InnoDB还支持外键(FOREIGN KEY)。
外键所在的表叫做子表,外键所依赖(REFERENCES)的表叫做父表。
父表中被字表外键关联的字段必须为主键。
当删除、更新父表中的某条信息时,子表也必须有相应的改变,这是数据库的参照完整性规则。
1.1 存储 .frm .ibd
InnoDB中,创建的表的表结构存储在.frm文件中。
数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。
1.2 InnoDB的优势缺点
在于提供了良好的事务处理、崩溃修复能力和并发控制。
支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。
如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。
Innodb支持事务和行级锁,是innodb的最大特色。
缺点是读写效率较差,占用的数据空间相对较大。
1.3 InnoDB事务
innodb支持事务和行级锁,是innodb的最大特色。事务的ACID属性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability) 并发事务带来的几个问题:更新丢失,脏读,不可重复读,幻读。 事务隔离级别:读未提交(Read uncommitted),读已提交(Read committed),可重复读(Repeatable read),串行化(Serializable) show global variables like 'tx_isolation';
2 MyISAM存储引擎
MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。
MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。
基于MyISAM存储引擎的表支持3种不同的存储格式。
包括静态型、动态型和压缩型。
其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;
压缩型需要用到myisampack工具,占用的磁盘空间较小。
2.1 MyISAM的表存储成3个文件 .frm .myd .myi
文件的名字与表名相同。拓展名为frm、MYD、MYI。
frm文件存储表的结构;
myd文件存储数据,是MYData的缩写;
myi文件存储索引,是MYIndex的缩写。
2.2 MyISAM的优势缺点
MyISAM的优势在于占用空间小,处理速度快。
缺点是不支持事务的完整性和并发性。
不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合 myisam只支持表级锁
这篇关于MySQL常见的存储引擎(InnoDB、MyISAM)data目录下(.frm,.myi,.myd)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!