MySQL是最流行的关系型数据库软件之一,由于其体量小、速度快、开源免费、简单易用、维护成本低等,在季军架构中易于扩展、高可用等优势,深受开发者和企业的欢迎,在互联网行业广泛使用。

  其系统架构如下:

    

  MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。

  1、网络连接层

  2、服务层

    服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分:

    1)连接池:负责存储和管理客户端与数据库的链接,一个线程负责管理一个连接。

    2)系统管理和控制工具:例如备份恢复、安全管理、集群管理等。

    3)SQL接口:用于接受客户端发送的各种SQL命令,并且返回用户需要查询的结果。比如DML、DDL、存储过程、视图、触发器等。

    4)解析器:负责将请求的SQL解析生成一个“解析树”。然后根据一些MySQL规则进一步检查解析树是否合法。

    5)查询优化器:当“解析树”通过解析器语法检查后,交优化器将其转化成执行计划,然后与存储引擎交互。

    6)缓存:缓存机制是由一系列小缓存组成的。比如表缓存、记录缓存、权限缓存、引擎缓存等。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

  3、存储引擎层

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

  4、系统文件层

    该层负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,是文件的物理存储层。主要包含日志文件、数据文件、配置文件、pid文件、socket文件等。

    1)日志文件

      错误日志(Error log):默认开启  show variables like '%log_error%'

      通用查询日志(General query log):记录一般查询语句,show variables like '%general%'

      二进制日志(binary log):记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间、执行时长;但是它不记录select/show等不锈钢数据库的SQL。主要用于数据库恢复和主从复制。

        show variables like '%log_bin%';  //是否开启

        show variables like '%binlog%';  //查看参数

        show binary logs;  //查看日志

      慢查询日志(slow query log):记录所有执行时间超时的查询SQL,默认是10秒。

        show variables like '%slow_query%';  //是否开启

        show variables like '%long_query_time%';  //查看时长

    2)配置文件:用于存放MySQL所有的配置信息文件,比如my.cnf、my.ini等。

    3)数据文件

      

    4)pid文件:是mysqld应用程序在Unix/Linux环境下的一个进程文件,和许多其他Unix/Linux服务端程序一样,它存放这自己的进程id。 CentOS8上安装MySQL - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)有相关介绍,可参考。

    5)socket文件:也是在Unix/Linux环境下才有的,用户在这俩环境下客户端链接可以不通过TCP/IP完了而直接使用Unix Socket 来链接MySQL。

     

MySQL架构原理之体系架构的更多相关文章

  1. MySQL InnoDB存储引擎体系架构 —— 索引高级

    转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...

  2. Kylin工作原理、体系架构

    核心思想:预计算. 对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube,并存在HBase中,供查询时直接访问 将高复杂度的聚合运算.多表连接……操作转换成对预计算结果的查询.决定了Kyl ...

  3. 【Memcached】原理、体系架构、基本操作及路由算法

    1. 什么是Memcached 要了解Memcached首先要到官网上去看官方对它的描述.Memcached的官网网站是:http://memcached.org/,官方对Memcached的描述如下 ...

  4. MySQL运行原理与基础架构

    1.MySQL基础 MySQL是一个开放源代码的关系数据库管理系统.原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用. 2008年My ...

  5. Tomcat 架构原理解析到架构设计借鉴

    Tomcat 发展这么多年,已经比较成熟稳定.在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人』,难道说如今就没有必要深入学习它了么?学习它我们又 ...

  6. MySQL架构原理之存储引擎InnoDB数据文件

    MySQL架构原理之体系架构 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中简单介绍了MySQL的系统文件层,其中包含了数据文件.那么InnoDB的数据文件是如何分类并存储的呢? 一. ...

  7. 大数据体系概览Spark、Spark核心原理、架构原理、Spark特点

    大数据体系概览Spark.Spark核心原理.架构原理.Spark特点 大数据体系概览(Spark的地位) 什么是Spark? Spark整体架构 Spark的特点 Spark核心原理 Spark架构 ...

  8. 【MySQL参数优化】根据架构优化

    根据MySQL的架构优化 参数调整的最终效果: 1)SQL执行速度足够快 2)业务吞吐量足够高:TPS,QPS 3)系统负载可控,合理:cpu,io负载 在调整参数的时候,应该熟悉mysql的体系架构 ...

  9. NUMA 体系架构

    NUMA 体系架构 SMP 体系架构 NUMA 体系架构 NUMA 结构基本概念 Openstack flavor NUMA 策略 Nova 实现 NUMA 流程 1. SMP 体系架构 CPU 计算 ...

随机推荐

  1. PPT2010制作翻牌动画

    原文: https://www.toutiao.com/i6492653280676545037/ 新建一张空白幻灯片 选择"插入"选项卡,"插入"功能组,&q ...

  2. nuxt 项目安装及环境配置

    babel篇 在package.json中添加--exec babel-node 如果需要编译es6,我们需要设置presets包含es2015,也就是预先加载es6编译的模块. 如果需要编译es7, ...

  3. Android学习笔记5

    SharedPreferenced的使用方法:SharedPreferences 是一个轻量级的存储类,主要是保存一些小的数据,一些状态信息 第一步:初始化         * 获取SharedPre ...

  4. golang gin框架中使用protocol buffers和JSON两种协议

    首先,我使用protobuf作为IDL,然后提供HTTP POST + JSON BODY的方式来发送请求. 能不能使用HTTTP POST + PB序列化后的二进制BODY呢? 做了一下尝试,非常简 ...

  5. golang中结构体标签在json中的应用

    package main import ( "encoding/json" "fmt" "reflect" ) type Movie str ...

  6. mpfu 位编辑处理?

    1.  国内的不用处理,其余都做 2.  判断是否是mp   的项目 3  设置位数编辑    请求中    和  检查中都要做 4  以某一画面作为基准,修改不同的值. 5  对象外的数据直接设置在 ...

  7. 关于spring MVC 绑定json字符串与实体类绑定

    1 如果前台传json字符串,后台用@RequestBody 接收 前端 "content-Type":"application/json", 2  前台用fo ...

  8. 寻找写代码感觉(十六)之 集成Validation做参数校验

    写在前面 今天是大年初五了... 不知不觉,又要上班了,美好的假期只剩一天了,有点不舍呢! 也不知道为什么,总感觉像在做梦一样,像没睡醒一样,并不是因为眼睛小,更多应该是自寻烦恼,想得多罢了. 参数校 ...

  9. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  10. debian下编译安装redis并加入到systemd启动管理

    原文地址: http://blog.duhbb.com/2022/02/09/compile-and-install-redis-debian-and-add-to-systemd/ 欢迎访问我的个人 ...