我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 架构

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 架构

MySQL 架构

执行流程简介

  • 主要分为server层和存储引擎层。
    • server层主要分为:连接器、解析器、优化器、执行器、查询缓存
      1. 连接器:主要作用就是用户认证、给用户创建连接并使用连接池维护连接。
      2. 查询缓存:建立连接之后,就可以进行SQL操作了,如果该SQL语句在查询缓存中可以匹配到,则不需要找后面的模块了,但是查询缓存不建议使用。查询缓存中缓存的记录,如果对于的表发生写操作,那么这些记录都会从缓存中删除。在MySQL8以后,该功能直接去除掉了。在查询缓存中,key就是SQL语句,value是对应的结果。
      3. 解析器:词法解析、语法解析。
        1. 词法解析:根据空格将SQL语句拆分。拆分出来SQL关键字和非关键字(表、列)
        2. 语法解析:将SQL进行语法校验,是否符合SQL92标准或者MySQL的语法标准。并且在此处分析是DDL、还是DML、还是DQL语句。
      4. 优化器:优化索引,在此时会选择一个索引使用。并且在此时形成执行计划(如何使用索引、如何多表关联)。
      5. 执行器:按照优化之后的SQL,去调用存储引擎层,完成对应的操作。
    • 存储引擎层:是真正和数据的读写有关系的。存储引擎是MySQL模块中真正和物理磁盘进行交互的部分。而存储引擎在MySQL中是采用插件式方式的。

客户端:

select * ftom t where id = 1;

服务端:

  1. 调用连接器,去用户认证、建立连接、查询该用户的权限。
  2. 查询缓存,缓存中如果有记录,则直接返回结果。
  3. 调用解析器,对SQL语句进行词法分析和语法分析,也会进行SQL语法校验。
  4. 调用优化器,对SQL生成执行计划,并且在此时选择哪个索引进行搜索。
  5. 调用执行器,按照SQL的语句的执行计划,去调用存储引擎层,完成操作。
  6. 把查询结果返回给客户端,并且保存到查询缓存中。

MySQL 存储引擎

  1. MySQL数据库特性: 提供了多种存储引擎。
  2. 而且存储引擎是针对表的, 也就是说,同一数据库不同的表可以选择不同的存储引擎 creat table xxx()engine=InnoDB/Memory/MyISAM

MySQL存储引擎种类

  1. MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务
  2. InnoDB 5.5版本后MySQL的默认数据库,支持事务和行级锁定,比MyISAM处理速度稍慢
  3. ISAM MyISAM的前身,MySQL5.0以后不再默认安装
  4. MRG_MyISAM(MERGE) 将多个表联合成一个表使用,在超大规模数据存储时很有用
  5. Memory 内存存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。只在内存上保存数据,意味着数据可能会丢失
  6. Falcon 一种新的存储引擎,支持事物处理,传言可能是InnoDB的替代者
  7. Archive 将数据压缩后进行存储,非常适合存储大量的独立的,作为历史记录的数据,但是只能进行插入和查询操作
  8. CSV CSV 存储引擎是基于 CSV 格式文件存储数据(应用于跨平台的数据交换)

查看存储引擎:mysql> show engines;

InnoDB和MyISAM存储引擎区别:

  1. 存储文件
    • Innodb: .frm 表定义文件 .ibd 数据文件和索引文件
    • Myisam: .frm 表定义文件 .myd 数据文件 .myi 索引文件
    • Innodb: 表锁、行锁
    • MyISAM: 表锁
  2. 事物
    • Innodb: 支持
    • MyISAM: 不支持
  • MyISAM使用场景读的效率高,用于数据分析

物理结构

  • MySQL是通过文件系统对数据和索引进行存储的。
  • MySQL从物理结构上可以分为日志文件和数据索引文件。
  • MySQL在Linux中的数据索引文件和日志文件都在/var/lib/mysql目录下

日志文件(顺序IO)

可以通过命令查看当前数据库中的日志使用信息: mysql> show variables like "log_%";

错误日志(err log)

  • 默认是开启的,而且从5.5.7以后无法关闭错误日志,错误日志记录了运行过程中遇到的所有严重的错误信息,以及 MySQL每次启动和关闭的详细信息。
  • 默认的错误日志名称:hostname.err。
  • 修改/etc/my.cnf配置文件如下:
log_error可以直接定义为文件路径,也可以为ON|OFF;
log_warings只能使用1|0来定义开关启动

二进制日志(bin log)

  1. 默认是关闭的,需要通过配置:log-bin=mysql-bin进行开启。其中mysql-bin是binlog日志文件的basename,binlog日志文件的名称:mysql-bin-000001.log
  2. 介绍:
    • binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息,binlog主要作用是用于恢复数据,因此binlog对于灾难恢复和备份恢复来说至关重要。如果是DDL语句,则直接记录到binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。
  3. 作用:
    • binlog主要用于实现mysql主从复制、数据备份、数据恢复。

通用查询日志(general query log)

默认情况下通用查询日志是关闭的。由于通用查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的。如若不是为了调试数据库的目的建议不要开启查询日志。

慢查询日志(slow query log)

  • 默认是关闭的。需要通过以下设置进行开启:
    	slow_query_log=ON
    	long_query_time=10 // 记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句
    

事务日志(redo /undo log)

  • 事务日志(InnoDB特有的日志)也叫redo日志。
  • 文件名为"ib_logfile0"和“ib_logfile1”,默认存放在表空间所在目录。
  • 还有一个日志文件叫undo 日志,默认存储在ib_data目录下。

中继日志(relay log)

  • 是在主从复制环境中产生的日志。
  • 主要作用是为了从机可以从中继日志中获取到主机同步过来的SQL语句,然后执行到从机中。

数据文件( 随机IO )

  • 查看MySQL数据文件:SHOW VARIABLES LIKE ‘%datadir%’;

InnoDB数据文件

  • .frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息
  • .ibd:使用独享表空间存储表数据和索引信息,一张表对应一个ibd文件。
  • ibdata文件:使用共享表空间存储表数据和索引信息,所有表共同使用一个或者多个ibdata文件。

MyIsam数据文件

  • .frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息
  • .myd文件:主要用来存储表数据信息。
  • .myi文件:主要用来存储表数据文件中任何索引的数据树。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 架构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 架构

执行流程简介主要分为server层和存储引擎层。server层主要分为:连接器、解析器、优化器、执行器、查询缓存连接器:主要作用就是用户认证、给用户创建连接并使用连接池维护连接。查询缓存:建立连接之后,就可以进行SQL操作了,如果该SQL语句在查询缓存中可以匹
MySQL 架构
2016-06-23
2024-04-02

MYSQL架构篇

目标:掌握Mysql的各组件及各组件的功能理解Mysql简版执行流程和详细执行流程掌握MyIsam和InnoDB的区别并说明使用场景掌握Mysql日志文件及主要日志文件的作用理解Mysql的数据文件及作用使用命令查看mysql日志配置my.cnf开启二进制日志

	MYSQL架构篇
2014-06-28

mysql架构类问题之MHA架构

MHA 架构适用的主从复制架构 主 / | 从1 从2 从3故障转移步骤选举具有最新更新的slave尝试从宕机的master保存二进制日志应用差异的中继日志到其他slave应用从master保存的二进制日志提升选举的slave为新的master配置其他slav
mysql架构类问题之MHA架构
2015-04-12

mysql 架构类问题之 MMM 架构

MMM 和 MHA 架构MMM 和 MHA 架构的作用对主从复制集群的 master 进行监控当 master 宕机后把写 VIP 迁移到新 master重新配置集群中其他 slave 对新的 master 同步MMM 架构适用的主从复制架构 主 -- 主
mysql 架构类问题之 MMM 架构
2014-12-31

MySQL架构体系

MySQL基本架构(一条SQL语句的执行过程)MySQL主要可以分为Server层和存储引擎层。Server层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持Inno
MySQL架构体系
2018-05-07

Mysql 架构分析

1. mysql架构图1.1 各模块说明2 .Binlog 日志的使用3. Redo Log 和 Binlog的区别
Mysql 架构分析
2018-01-11

Mysql架构图解读

目录一、Server层1、连接器2、缓存模块3、分析器(分析需要做什么)4、优化器(分析怎么做)5、执行器(执行过程)二、存储引擎层三、查询流程总结mysql服务端架构分为Server层http://www.lsjlt.com和存储引擎层(
Mysql架构图解读
2024-08-13

Mysql 高可用架构

MMM方案 即使主从复制中间出现异常情况,MMM记录了详细同步日志,重启服务后会从错误的地方继续同步,不会丢失数据; Mysql经典架构方案 此方案做了读写分离,写入是通过访问映射VIP地址,写入到主服务器,再通过vip实现主从同步保持数据一致;LVS+k
Mysql 高可用架构
2020-03-29

MYSQL-3m架构回顾

Master-Master replication manager for Mysql     我们先来回顾一下mmm的概念,它是一套灵活的基于perl编写的脚本程序,自己本身不提供mysql服务的功能,它是用来对mysql replica
2023-01-31

MySQL的体系架构

文章目录 前言MySQL的Server层MySQL的存储引擎1)InnoDB 存储引擎2)MyISAM 存储引擎3)Memory 存储引擎 前言 在学习一种事务之前,我们需要先了解事物的基本组成结构,清楚了事物的基本组成结
2023-08-16

基于MySQL架构图解

目录mysql物理架构配置文件MySQL逻辑架构SQL执行InnoDB存储引擎架构TABLESPACEInnoDB存储引擎InnoDB 内存中组件在磁盘上的组件存储引擎总结本文记录了MySQL 5.7的物理和逻辑架构,还有其组件。在这个帖子
2023-03-13

MySQL 整体架构介绍

MySQL 在整体架构上分为 Server 层和存储引擎层。其中 Server 层,包括连接器、查询缓存、分析器、优化器、执行器等,存储过程、触发器、视图和内置函数都在这层实现。数据引擎层负责数据的存储和提取,如 InnoDB、MyISAM
2022-05-23

编程热搜

目录