• MySQL之体系架构


    在这里插入图片描述

    该图是数据库前十排行榜——更新于2022年8月


    在这里插入图片描述

    基于MySQL5.7版本


    网络连接层

    • 客户端连接器:
      • 支持C语言、Java、.NET、PHP、Python等

    核心服务层

    • 系统管理和控制工具:
      • 如备份恢复、安全管理、集群管理等。
    • 连接池:
      • 负责存储和管理客户端与数据库的链接,一个线程负责管理一个连接。
    • SQL接口:
      • 用于接收客户端发送的各种SQL命令,并且返回用户需要查询的结果。比如DML(数据的增删改查操作)、DDL(创建数据库表、修改数据库表操作),视图,触发器等。
    • 解析器:
      • 负责将请求的SQL解析生成一个“解析树”。然后根据MySQL规则进一步检查解析树是否合法。底层使用了C语言的开源语法工具和词法分析工具,解析SQL时,先进行“词”分析,再进行“语法”分析。
    • 查询优化器:
      • 当“解析树”通过解析器语法检查后,将交由优化器将其转化为执行计划,然后与存储引擎层交互。
    • 缓存:
      • 缓存机制是由一系列小的缓存组成;比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存命中,就直接去缓存中取数据,大大提交了效率。

    存储引擎层

    • 存储引擎负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异。最常见的是MyISAM和InnoDB。

    系统文件层

    • 日志文件:
      • 错误日志(Error log)
        默认开启,命令show variable like ‘%log_error%’; 可以查看错误日志存储位置
      • 通用查询日志(General query log)
        记录一般的查询语句,
        默认关闭,命令show variables like ‘%general%’;
      • 二进制日志(binary log)
        记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间、执行时长;但是它不记录select、show等不修改数据库的SQL。主要用于数据库恢复和主从复制。
        默认关闭,命令show variables like ‘%log_bin%’;
        binlog参数,命令show variables like ‘%binlog%’;
        开启之后,可以查看日志文件,命令show binary logs;
      • 慢查询日志(slow query log)
        记录所有执行时间超时的查询SQL,默认10秒。
        查看是否开启并查看慢SQL日志存储路径,命令show variables like ‘%slow_query%’;
        查看慢SQL判定时长,命令show variables like ‘%long_query_time%’;
        设置慢SQL判定时长,命令set long_query_time = 5; 单位:秒
    • 配置文件:
      用于存放MySQL所有的配置信息文件,比如my.cnf、my.ini等。
    • 数据文件:
      • db.opt文件:记录这个哭的默认是用的字符集和校验规则。
      • frm 文件:存储与表相关的元数据(meta)信息,包括表结构的定义信息等,每一张表都会有一个frm文件。
      • MYD文件:MyISAM存储引擎专用,存放MyISAM表的数据(data),每一张表都会有一个.MYD文件。
      • MYI文件:MyISAM存储引擎专用,存放MyISAM表的索引相关信息,每一张表都有一个对应的.MYI文件。
      • idb文件和IBDATA文件:存放InnoDB的数据文件(包括索引)。InnoDB存储引擎有两种表空间方式:独享表空间和共享表空间。独享表空间使用.ibd文件来存放数据,并且每一张InnoDB表对应一个.idb文件。共享表空间使用.ibdata文件,所有表共同使用一个(或多个,自行配置).ibdata文件。
      • ibdata1文件:系统表空间数据文件,存储表元数据、Undo日志等。
      • ib_logfile0、ib_logfile1文件:Redo log日志文件。
        详细可到文末跳转其他章节
    • pid文件:
      • pid文件是mysqI在Unix/Linux环境下的进程文件,存放着自己的进程id。
    • socket文件:
      socket文件也是在Unix/Linux下才有的,用户在Unix/Linux环境下可以不通过TCP/IP网络直接使用Unix Socket来连接MySQL。

    其他章节 -> 跳转

    end...
    
    • 1
  • 相关阅读:
    剑指 Offer 38. 字符串的排列
    年薪50W+的测试大佬都在用这个:Jmeter 脚本开发之——扩展函数
    SpringBoot自动装配
    2023年最佳项目管理软件排行榜揭晓!
    github配置ssh密钥
    Linux下怎样使用core文件查看异常崩溃的程序问题
    centos7.9脚本,怎么排除特定的访问记录
    uni-app:本地缓存的使用
    批量下载浏览器网页中全部链接的方法
    c++中的模板(7) -- 模板与静态成员
  • 原文地址:https://blog.csdn.net/weixin_45881674/article/details/126305672