编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

「Mysql」系统架构(mysql体系架构)

wxchong 2024-08-08 01:17:46 开源技术 17 ℃ 0 评论

前言

由于我们不是专业的DBA,导致在学习Mysql的过程中没有非常好的系统性学习.比如为了快速满足大数据查询,专攻性的学习索引相关知识.可能对Mysql的整个知识面比较模糊.小哈决定做一个Mysql的学习系列,从面到点的学习整个Mysql相关的知识,希望对大家有帮助.

逻辑架构

逻辑架构图如下:

  1. MySQL向外提供的交互接口(Connectors)
  2. 管理服务组件和工具组件(Management Service & Utilities)
  3. 连接池组件(Connection Pool)
  4. SQL接口组件(SQL Interface)
  5. 查询分析器组件(Parser)
  6. 优化器组件(Optimizer)
  7. 缓存组件(Caches & Buffers)
  8. 插件式存储引擎(Pluggable Storage Engines)
  9. 物理文件(File System)

Mysql使用了插拔式的存储引擎方式,可以让用户在使用的时候自由选择使用不同的引擎.比较重要的两个引擎就是MyISAMInnoDB

mysql> show engines;  查看mysql现在已提供的存储引擎
mysql> show variables like ‘%storage_engine%’; 查看mysql当前默认的存储引擎

各个引擎的对比情况如下图:

MySQL物理结构

MySQL从物理结构上可以分为日志文件数据文件

  1. 日志文件(顺序IO):MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志二进制日志查询日志慢查询日志事物Redo日志中继日志等。可以通过命令查看当前数据库中的日志使用信息
show variables like ‘log_%’;
  • 错误日志(err log): 1.1 默认是开启的,而且从5.5.7以后无法关闭错误日志 1.2 记录了运行过程中遇到的所有有严重的错误的信息,以及MySQL每次启动和关闭的详细信息。1.3 默认的错误日志名称:hostname.err1.4 错误日志所记录的信息是可以通过log-errorlog-warnings来定义的。
  • 二进制日志:1.1 默认关闭,需要通过配置:log-bin=mysql-bin进行开启。其中mysql-bin是binlog日志文件的basenamebinlog 日志文件的名称:mysql-bin-000001.logbinlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更数据,binlog还包括了每个更新语句的执行时间信息,binlog主要作用是用于恢复数据,因此binlog对于灾难恢复和备份恢复来说至关重要。1.2 如果是ddl语句,则直接记录到binlog日志,而dml语句,必须通过事物提交才能记录到binlog日志中。binlog还用于实现mysql的主从复制
  • 通用查询日志(general query log):1.1 默认情况下是关闭的 1.2 由于通用查询日志会记录用户的所有操作,其中还包含增删改查等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能,如若不是为了调试数据库的目的建议不要开启查询日志
  • 慢查询日志(slow query log):1.1 默认是关闭的。需要通过设置:slow_query_log=ON进行开启。1.2 记录执行时间超时long_query_time秒所有的查询,便于收集查询时间较长的SQL语句
  • 事物日志(redo/undo log):事物日志(InnoDB特有的日志)也叫redo日志。文件名为“ib_logfile0”和"ib_logfile1",默认存放在表空间所在目录 还有一个日志文件叫undo日志,默认存储在ib_data目录下
  • 中继日志(relay log):是在主从复制环境中产生的日志 主要作用是为了从机可以从中继日志中获取到主机同步过来的SQL语句,然后执行到从机中

2.数据文件(随机IO):InnoDB数据文件:

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

MyIsam数据文件:

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

小结

本文我们了解了Mysql大体上的架构设计.包括逻辑架构数据架构.但是很概念性,那么接下来我会通过解析select,update语句的执行过程,来详情的介绍各个模块的作用.

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表