**innodb 数据文件**
当使用 **innodb** 存储引擎时,数据和索引通常存储在一个或多个 .ibd 文件中。这些文件是表的数据和索引的存储位置,每个表通常会有一个单独的 .ibd 文件,除非启用了共享表空间。共享表空间(通常是 ibdata1)则存储了所有表的数据。
**myisam 数据文件**
对于 **myisam** 存储引擎,每个表通常包含两个文件:一个数据文件(.myd)和一个索引文件(.myi)。其中,.myd 文件存储表的数据,而 .myi 文件则存储表的索引。
**mysql的体系结构概述**
1. **客户端链接层**:这是mysql对外提供的交互接口,用户可以通过各种工具如navicat,workbench,jdbc,python等进行连接。
2. **连接池组件**:这个组件管理和缓冲用户连接,处理客户端的请求,并进行身份认证。
3. **sql接口层**:这一层的主要作用是接受用户的sql请求,并进行查询、解析、分析、权限处理、优化和结果缓存等操作。其中的sql接口组件接收用户的sql命令并返回结果。查询分析器则负责分析输入的语句的意图和语法。
4. **优化器组件**:在语句真正执行之前,优化器进行最后的优化,决定如何高效地执行查询。
5. **缓存主件**:mysql通过查询缓存来提高响应速度。一旦数据发生更改,相关的缓存会失效。
6. **管理服务组件和工具组件**:这些组件提供mysql的集成管理功能,如备份、恢复、安全管理等。
7. **存储引擎层**:这是mysql的核心部分,负责数据的存储和提取。innodb和myisam是其中的两种存储引擎。还有memory等其他存储引擎。存储引擎层还负责记录数据库的更改操作、慢查询日志、中继日志以及undo log等。
* **undo log日志**:这是一种用于记录撤销操作的日志,常见于数据库系统或应用程序。当执务或操作时,它可以撤销先前的变更,是一种保护机制,有助于恢复数据或避免错误操作。在innodb存储引擎中,undo log主要用于支持事务的回滚和多版本并发控制。