MySQL逻辑架构

这篇具有很好参考价值的文章主要介绍了MySQL逻辑架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

分层简述

连接管理与安全性

优化与执行文章来源地址https://www.toymoban.com/news/detail-488239.html


  • 分层简述

  • 先看图:
  • MySQL逻辑架构
  • 最上层的服务并不是MySQL所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构
  • 比如连接处理、授权认证、安全等等
  • 第二层架构是MySQL比较有意思的部分
  • 大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等
  • 第三层包含了存储引擎
  • 存储引擎负责MySQL中数据的存储和提取
  • 和GNU/Linux下的各种文件系统一样,每个存储引擎都有它的优势和劣势
  • 服务器通过API与存储引擎进行通信
  • 这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明
  • 存储引擎API包含几十个底层函数,用于执行诸如“开始一个事务”或者“根据主键提取一行记录”等操作
  • 但存储引擎不会去解析SQL(InnoDB是一个例外,它会解析外键定义,因为MySQL服务器本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单地响应上层服务器的请求
  • 连接管理与安全性

  • 每个客户端连接都会在服务器进程中拥有一个线程
  • 这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行
  • 服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程(MySQL 5.5或者更新的版本提供了一个API,支持线程池(Thread-Pooling)插件,可以使用池中少量的线程来服务大量的连接)
  • 当客户端(应用)连接到MySQL服务器时,服务器需要对其进行认证
  • 认证基于用户名、原始主机信息和密码
  • 如果使用了安全套接字(SSL)的方式连接,还可以使用X.509证书认证
  • 一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限(例如,是否允许客户端对world数据库的Country表执行SELECT语句)
  • 优化与执行

  • MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等
  • 用户可以通过特殊的关键字提示(hint)优化器,影响它的决策过程
  • 也可以请求优化器解释(explain)优化过程的各个因素,使用户可以知道服务器是如何进行优化决策的,并提供一个参考基准,便于用户重构查询和schema、修改相关配置,使应用尽可能高效运行
  • 优化器并不关心表使用的是什么存储引擎,但存储引擎对于优化查询是有影响的
  • 优化器会请求存储引擎提供容量或某个具体操作的开销信息,以及表数据的统计信息等
  • 例如,某些存储引擎的某种索引,可能对一些特定的查询有优化
  • 对于SELECT语句,在解析查询之前,服务器会先检查查询缓存(Query Cache),如果能够在其中找到对应的查询,服务器就不必再执行查询解析、优化和执行的整个过程,而是直接返回查询缓存中的结果集

到了这里,关于MySQL逻辑架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL进阶之(一)逻辑架构

    服务器在处理客户端发来的请求时都做了什么处理才能产生最后的处理结果呢?下面是一张大致的流程图: 具体展开是这样的,大致可以分为 连接层、服务层、引擎层、存储层 四层结构: 客户端连接器, 也就是 MySQL 服务器之外的客户端程序(与具体的语言相关),负责处

    2024年02月04日
    浏览(37)
  • C-04.MySQL逻辑架构

    1.1 服务器处理客户端请求 首先MySQL是典型的C/S架构,即 Client/Server架构 ,客户端使用的是mysql,服务器端程序使用的 mysqld 。 不论客户端进程和服务器进程是采用那种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再

    2024年03月26日
    浏览(26)
  • MySQL进阶_5.逻辑架构和SQL执行流程

    不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是: 客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。 上图的处理流程在MySQL5.7和8.0中有所不同,只是一个通用的处理流程,后续会有更详细

    2024年02月05日
    浏览(35)
  • [架构之路-245/创业之路-76]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业资源管理计划ERP

    目录 前言: 一、企业信息化的结果:常见企业信息化软件 1.1 企业资源管理计划 1.1.1 什么是ERP:企业最常用的信息管理系统 1.1.2 ERP的演进过程 1.1.3 EPR模块 1.1.4 EPR五个层级 1.1.5 企业EPR业务总体流程图 1.1.6 什么类型的企业需要ERP 1.1.7 创业公司什么情况需要ERP 1.1.8 ERP与人工管

    2024年02月07日
    浏览(54)
  • [架构之路-251/创业之路-82]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 商业智能、决策支持系统、知识管理

    目录 前言: 一、企业信息化的结果:常见企业信息化软件 1.1 商业智能 - 管理层 1.1.1 什么是商业智能What 1.1.1.1 商业智能常见工具 1.1.2 为什么需要商业智能Why? 1.1.3 谁需要商业智能who? 1.1.4 商业智能在企业管理中的位置where 1.1.5 什么情况下需要使用商业智能When 1.1.6 如何实

    2024年02月06日
    浏览(47)
  • MYSQL04高级_逻辑架构剖析、查询缓存、解析器、优化器、执行器、存储引擎

    ①. 服务器处理客户端请求 ②. 连接层 系统(客户端)访问MySQL服务器前,做的第一件事就是建立TCP连接 经过三次握手建立连接成功后,MySQL服务器对TCP传输过来的账号密码做身份认证、权限获取 用户名或密码不对,会收到一个Access denied for user错误,客户端程序结束执行用户名密码认

    2024年02月12日
    浏览(39)
  • SpringBoot查找多级商品方案【一次sql查询所有数据,循环处理分层逻辑】

    一、查找所有商品 1、service CategoryServiceImpl.java this::category2CategoryVo 等价于 e - category2CategoryVo(e) 2、循环查找子目录 CategoryServiceImpl.java 3、直接拷贝数据 CategoryServiceImpl.java 二、根据categoryId查找多级商品 1、ProductServiceImpl.java 2、CategoryServiceImpl.java

    2024年02月12日
    浏览(45)
  • Unity3D 服务器逻辑和传输如何分层/解耦详解

    Unity3D 是一款强大的游戏开发引擎,它提供了丰富的功能和工具,使得开发者可以轻松地创建高质量的游戏。在游戏开发过程中,服务器逻辑和传输是非常重要的组成部分。本文将详细介绍如何在Unity3D中实现服务器逻辑和传输的分层和解耦。 对啦!这里有个游戏开发交流小组

    2024年01月16日
    浏览(46)
  • 六边形架构和分层架构的区别?

    查看原文:六边形架构和分层架构的区别? 六边形架构和分层架构是什么? 六边形架构(Hexagonal Architecture)和分层架构(Layered Architecture)是两种常见的软件架构模式。 六边形架构强调将核心业务逻辑与外部依赖解耦,通过接口与外部世界进行通信。核心业务逻辑位于架构

    2024年02月16日
    浏览(39)
  • Java架构师设计模式分层架构

    想学习架构师构建流程请跳转:Java架构师系统架构设计 设计模式的分层架构是一种常见的软件设计模式,它将应用程序划分为不同的层次,以便更好地组织和管理代码。每个层次

    2024年02月01日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包