探索data目录下的文件结构
mysql版本:5.7.36
操作系统:win10
工具:navicat
本文讲到的存储引擎:MyISAM、InnoDB
打开一个已经创建好的数据库,将表名展开,右键某一个表名,选择”设计表“。点击”选项“这一栏目,发现第一行就是”存储引擎“下拉选择框。我们从下拉框可以看到mysql都支持哪些存储引擎,如图:
支持的存储引擎有:
1. ARCHIVE
2. BLACKHOLE
3. CSV
4. InnoDB
5. MEMORY
6. MRG_MYISAM
7. MyISAM
8. PERFORMANCE_SCHEMA
1. myisam和innodb文件结构的区别
我们先创建myisam表,create table 's_brand_m' (...) ENGINE=MyISAM;
再创建innodb表,create table 's_brand' (...) ENGINE=InnoDB;
打开data文件夹,可以看到:
myisam创建的表有三个文件 .frm .MYD .MYI
innodb创建的表只有两个文件 .frm .ibd
其中.frm文件存储的是表结构,这个在这两种存储引擎中都一样。但是innodb的数据文件和索引文件在同一个文件里,也就是.ibd。而myisam的数据文件和索引文件分开,分别是.MYD和.MYI。
2. db.opt文件
另外,我们发现每一个数据库对应的文件目录下,都有一个db.opt,这个文件是MySQL建库过程中自动生成的,记录了该库的默认字符集编码和字符集排序规则。如果你创建数据库指定默认字符集和排序规则,那么后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。如果删除这个db.opt,那么MySQL在建表的时候参照全局的字符设置,default-character-set 。
3. auto.cnf文件
在data目录下面,最先看到的就是这个auto.cnf,我们可以用文本工具打开这个文件。这个是打开后的内容:
[auto] server-uuid=dd06cf56-8198-11ec-b80b-9c7bef19391a
MySQL启动时,会自动从data/auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。server-uuid与server-id一样,用于标识MySQL实例在集群中的唯一性,这两个参数在主从复制中具有重要作用,默认情况下,如果主、从库的server-uuid或者server-id的值一样,将会导致主从复制报错中断。
4. pem文件
包括什么ca.pem啦,ca-key.pem啦等等。很显然这类文件和密钥有关,这里我就不管他们了。
5. ib_buffer_pool
innodb的缓冲池, 有点复杂,暂时没看懂
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构