mysql的存储引擎

1.数据文件(Data Files)

InnoDB 数据文件(.ibd 文件)当使用 InnoDB 存储引擎时,数据和索引通常存储在一个或多个 .ibd 文件中。这些文件包含了表的数据以及索引。每个表通常会有一个单独的 .ibd 文件,除非启用了共享表空间(innodb_file_per_table=0),则所有表的数据会存储在共享表空间文件中(通常是 ibdata1)。MyISAM 数据文件(.MYD 和 .MYI 文件)对于 MyISAM 存储引擎,每个表通常有两个文件:一个数据文件(.MYD)和一个索引文件(.MYI)。.MYD 文件:存储表的数据。.MYI 文件:存储表的索引。

mysql的体系结构

(mysqlserver层对应的)

1、客户端链接层MySQL向外提供的交互接口: 相关的navicat,workbench,jdbc,python等

2. 连接池组件 管理和缓冲用户连接,为客户端请求做连接处理;身份认证等。

3.sql接口层: 主要作用:接受用户的SQL请求,查询,解析,分析,权限处理,优化,结果缓存等。

SQL接口组件(SQL Interface)

接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。

查询分析器组件(Parser)

系统在真正执行输入的语句之前,必须分析出语句想要干嘛?例如:首先通过select关键字得知这是一条查询命令,还包括分析要查询的是哪张表以及查询条件是什么?同时,分析器必须分析输入语句的语法正确性。如果SQL中存在语法的错误,则查询分析器组件将返回下面的信息

优化器组件(Optimizer)

优化器是MySQL用来对输入的语句在真正执行之前所做的最后一步优化。优化内容包括:是否选择索引?选择哪个索引?多表查询的联合顺序等等。 每一种执行方法的逻辑结果是一样的,但是执行的效率会有不同,而优化器的作用就是决定选择使用哪一个方案。

缓存主件(Query Caches & Buffers)

这个查询缓存比较好理解。在每一次的查询时,MySQL都先去看看是否命中缓存,命中则直接返回,提高了系统的响应速度。但是这个功能有一个相当大的弊病,那就是一旦这个表中数据发生更改,那么这张表对应的所有缓存都会失效。

4.管理服务组件和工具组件 MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等。

5.存储引擎层: MySQL的存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。

MySQL数据库物理文件错误日志

作用:存放数据库的启动、停止或运行时的错误信息;

场景:用于数据库启动排错。

二进制日志

作用:

二进制日志记录数据库的所有更改操作(DDL/DML/DCL),不包含select或者show这类语句

慢日志

作用:慢查询日志记录的是一些SQL语句,可用于查找需要很长时间才能执行的查询;

场景:用于找出长时间才能执行的查询语句,并对其进行优化。

但是,检查一个很长的慢查询日志可能成为一项艰巨的任务。为了简化这一过程,可以使用mysqldumpslow命令处理慢查询日志文件,以汇总日志中显示的查询。

中继日志

作用:记录从(slave)服务器接收来自主(master)服务器的二进制日志.

场景:用于主从复制

master主服务器将自己的二进制日志发送给slave从服务器,slave先保存在自己的中继日志中,然后再执行自己本地的relay log里的sql达到数据库更改和master保持一致。

undo log日志

undolog 是指用于记录撤销操作的日志,通常用于数据库系统或应用程序,以便在执行事务或操作时能够撤销先前的变更。它是一种保护机制,帮助恢复或撤销状态以避免数据丢失或错误操作。

在数据库中,undo log 记录了在执行某些操作时需要撤销的操作数据。常见的 undo log 包括以下内容:

撤销操作记录:如数据的更新、插入、删除等操作的原始数据。事务管理:事务开始时,会记录操作数据以便在事务回滚时恢复原状。恢复机制:如果操作失败或需要回滚,undo log 会按照日志中的信息执行撤销操作,恢复数据到原始状态。

在具体的实现上,比如 MySQL 使用 InnoDB 存储引擎时,undo log 主要用于支持事务的回滚和多版本并发控制(MVCC)。

滚动至顶部