MySQL篇|01MySQL体系结构

这是我参与更文挑战的第27天,活动详情查看: 更文挑战

mysql是目前各大公司通用的数据库。无论在工作时还是在面试,都会接触到MySQL涉及到的相关问题。

优势:

  • 免费
  • 体积小,速度快
  • 简单易用,维护成本低
  • 兼容性好,支持多种操作系统
  • 支持多种开发语言
  • 易扩展、集群、高可用
  • 支持事务、MVCC、4种隔离级别等

当然,在我们使用mysql时,会遇到各种问题:死锁、延迟、字符集错误、慢查询等等。所以,需要深入学习其原理才能快速定位问题,解决问题。

体系结构

MySQL的体系结构图

图片

MySQL体系结构由4部分组成

Client Connectors层

作用:负责处理客户端的连接请求,与客户端创建连接。

几乎支持所有的服务端的语言

MySQL Server层

  • 连接池Connection Pool
    • 负责处理和存储数据库与客户端的连接(一个线程管理一个连接)
    • 其中含有用户认证模块(用户身份验证和鉴权及安全管理)
  • 系统管理和工具集Services & Utilities
    • 提供备份恢复、安全管理、集群管理服务和工具
  • SQL接口 SQL Interface
    • 负责接收客户端发送的各种SQL语句,如:DML、DDL、储存过程等
  • 解析器Parser
    • 对SQL语句进行语法解析生成解析树
  • 查询优化器Opyimizer
    • 根据解析树生成执行计划,并选择合适的索引,然后按照执行计划SQL语句并与各个存储引擎交互
  • 缓存Caches
    • MySQL表缓存,记录缓存,也包含各个存储引擎的缓存部分,也会存储一些权限和session级别的缓存

StorageEngines存储引擎层

插件式的存储引擎:任何只要定义好与MySQL Server交互的接口,任何引擎都可以访问MySQL

存储引擎包括MyISAM、InnoDB、支持归档的Archive 、内存Memory等

重点储存引擎:InnoDB、MyISAM

系统文件层

文件的物理储存,包括通用查询日志、二进制日志,数据文件,错误日志,慢查询日志,全日志,redo/undo日志等

  • 错误日志:

    • MySQL运行过程中产生的错误信息
    • 查看错误日志:show variabes like '%log_error%'
  • 通用查询日志:

    • MySQL运行过程中产生的一般查询信息
    • 查看通用查询日志:show variabes like '%general%'
  • 二进制日志:

    • 记录MySQL数据量执行插入、修改、删除的操作,包括SQL语句执行的时间和时长

    • 恢复数据库的数据和实现MySQL主从复制都通过二进制日志

      show variables like '%log_bin%' //查看是否开启二进制日志
      show variables like '%binlog%'  // 查看二进制日志参数
      show  binary logs // 查看日志文件
      复制代码
  • 慢查询日志

    • 记录了SQL语句执行时间超过指定的时间(默认时间是10s)

      show variables like '%slow_query%' //查看是否开启了慢查询日志
      show variables like '%long_query_time%' //查询慢查询设置时间
      复制代码
  • 数据文件

    • 主要包含:db.opt文件、frm文件、MYD文件、MYI文件、ibd文件、ibdata文件、ibdata1文件、ib_logfile0和ib_logfile1文件
  • 配置文件

    • MySQL的所有配置信息
    • Unix/Linux系统是my,cnf文件,Windows系统是my.ini文件。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享