0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MySQL内部如何工作的?

深圳市恒讯科技有限公司 来源:深圳市恒讯科技有限公司 作者:深圳市恒讯科技有 2023-06-30 17:03 次阅读

MySQL是一个开源的、Oracle支持的基于结构化查询语言(SQL)的关系数据库管理系统(RDBMS)。它可以在所有主要平台上运行,包括Windows、Linux和UNIX。尽管MySQL的应用范围很广,但它最常与在线发布和Web应用程序相关联。

在本文中,小编将和大家一起讨论MySQL内部如何工作的?包括它的内部工作原理和组件。

一、MySQL的工作原理

MySQL遵循客户端-服务器模型。MySQL的核心是MySQL服务器,它管理所有数据库命令或指令。基本上,MySQL服务器可用作用户嵌入到单独应用程序中的库,也可用作客户端服务器网络环境的独立程序。

此外,MySQL还运行多个支持MySQL数据库管理的实用程序。用户通过计算机上的MySQL客户端向MySQL服务器发送命令。

此外,MySQL的设计使其能够快速管理大型数据库。虽然MySQL通常驻留在一台机器上,但它将数据库发送到多个位置,因为用户可以通过不同的MySQL客户端界面访问它。这些接口将SQL语句传输到服务器,然后显示结果。

二、MySQL的组件

当然,MySQL架构由三层或三端组成。架构的层次包括顶部的查询执行端(或客户端)、中间的服务器资源端和底部的存储引擎。数据库架构定义了系统的存储端、客户端、客户端之间的交互和关系。下面我们详细讨论各个层。

1、客户端

MySQL结构的客户端是数据库系统最终用户与之交互的组件。我们可以通过命令提示符或图形用户界面向服务器提交多个MySQL命令。

对于每个有效的命令提交,屏幕上都会显示有效的输出。对于每个错误的命令提交,系统都会将错误通知作为反馈转发到屏幕。客户端提供的一些关键服务是:

(1)连接处理

当我们向服务器端提交请求时,服务器会确认该请求。连接立即建立以允许我们执行更多请求。此功能称为连接处理,是该结构的客户端的一项功能。

(2)验证

当用户连接到MySQL服务器时,身份验证发生在服务器端。客户端组件借助用户名和密码完成身份验证。

(3)安全

通过身份验证后,用户成功连接到MySQL服务器。之后,服务器检查特定用户是否具有对MySQL服务器进行特定查询所需的必要权限。

2、服务器端

MySQL架构的第二层也被称为“MySQL架构的大脑”。这是因为该层控制MySQL关系数据库管理系统的所有逻辑功能。当客户端向服务器提交请求时,服务器一旦与指令匹配就提供输出。MySQL服务器的子组件包括:

(1)线程处理

客户端向服务器发送成功请求后,服务器接受请求,客户端进行连接。这种连接称为线程。该架构的服务器端有助于处理称为线程处理的过程中的每个线程。线程处理功能通过架构的服务器端执行。此外,线程处理模块还管理由线程执行的客户端查询。

(2)解析器

数据库中的数据通过称为词法分析的操作分解为多个标记。解析器是一个软件组件,它生成给定输入的数据结构/解析树。之后,MySQL的解析器包括语法规则模块和词法扫描器。词法扫描器将整个输入分解为标记,而语法规则模块则查找创建此序列的SQL语法规则组合并运行与这些规则关联的代码。最后,解析器生成一个解析树,供优化器使用。与某些将查询的文本表示形式转换为字节代码的解析器相反,MySQL的解析器将其转换为程序内存中内部互连的C++/C结构。

(3)优化器

解析完成后,系统会在优化器块上应用不同类型的优化技术。这些技术可能包括查询重写、正确的索引选择和扫描表的顺序。在这里,MySQL使用基于成本的方法进行优化。

当然,MySQL会尝试预测不同执行计划的成本并选择最便宜的。最初,成本单位是单个任意4 KB数据页读取。然而,它变得更加复杂,并包括运行WHERE子句比较的成本等因素。

(4)查询缓存

查询缓存存储输入查询语句的整个结果集合。在解析查询之前,服务器会查阅查询缓存,该缓存仅存储SELECT语句及其结果集。如果用户提交的查询与缓存中已有的查询类似,服务器会跳过查询的解析、优化和执行。服务器仅中继其先前存储的结果集。

之后,当服务器从分配给变量“query_cache_size”的值启动时,MySQL 会同时初始化并为查询缓存分配特定数量的内存。如果您更新此变量或将其设置为其当前值,MySQL将删除所有缓存的查询,将缓存中断到特定大小,并重新启动缓存内存。

总而言之,MySQL是一种广泛使用、经过时间考验、功能齐全的现代关系数据库管理系统。世界各地的组织都将其用于关键任务业务数据处理和存储,作为面向消费者的流行应用程序的后端,以及作为强大的Web软件堆栈的一部分。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8129

    浏览量

    82571
  • MySQL
    +关注

    关注

    1

    文章

    776

    浏览量

    26012
收藏 人收藏

    评论

    相关推荐

    MySQL的整体逻辑架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心
    的头像 发表于 04-30 11:14 92次阅读
    <b class='flag-5'>MySQL</b>的整体逻辑架构

    查询SQL在mysql内部是如何执行?

    我们知道在mySQL客户端,输入一条查询SQL,然后看到返回查询的结果。这条查询语句在 MySQL 内部到底是如何执行的呢?本文跟大家探讨一下哈,我们先来看下MySQL基本架构~
    的头像 发表于 01-22 14:53 171次阅读
    查询SQL在<b class='flag-5'>mysql</b><b class='flag-5'>内部</b>是如何执行?

    mysql密码忘了怎么重置

    mysql密码忘了怎么重置  MySQL是一种开源的关系型数据库管理系统,密码用于保护数据库的安全性和保密性。如果你忘记了MySQL的密码,可以通过以下几种方法进行重置。 方法一:使用MySQ
    的头像 发表于 12-27 16:51 865次阅读

    mysql配置失败怎么办

    MySQL是一款广泛使用的关系型数据库管理系统,但在配置过程中可能会出现各种问题,导致配置失败。本文将详细介绍MySQL配置失败的常见原因和对应的解决方案,以帮助读者快速排查和解决问题。 一、检查
    的头像 发表于 12-06 11:03 1540次阅读

    mysql数据库基础命令

    MySQL是一个流行的关系型数据库管理系统,经常用于存储、管理和操作数据。在本文中,我们将详细介绍MySQL的基础命令,并提供与每个命令相关的详细解释。 登录MySQL 要登录MySQL
    的头像 发表于 12-06 10:56 279次阅读

    php的mysql无法启动

    MySQL是一种常用的关系型数据库管理系统,而PHP是一种广泛应用于服务器端的脚本语言。在使用PHP开发网站或应用时,经常会碰到MySQL无法启动的问题。本文将详细介绍解决MySQL无法启动的方法
    的头像 发表于 12-04 15:59 576次阅读

    mysql和sql server区别

    MySQL和SQL Server是两种常见的关系型数据库管理系统(RDBMS),用于存储和管理数据库。虽然它们都支持SQL语言,但在其他方面存在一些显著的区别。以下是MySQL和SQL Server
    的头像 发表于 11-21 11:07 807次阅读

    安装sqlyog之前要装mysql

    在安装 SQLyog 前是否需要安装 MySQL 取决于您的情况。MySQL 是一个关系型数据库管理系统,而 SQLyog 是一个可视化数据库管理工具,主要用于管理和操作 MySQL 数据库。 对于
    的头像 发表于 11-21 11:02 590次阅读

    MySQL导出的步骤

    MySQL是一种常用的关系型数据库管理系统,用于存储和管理大量的结构化数据。在实际应用中,我们经常需要将MySQL数据库中的数据导出到其他地方,如备份数据、数据迁移、数据分析等。下面是使用MySQL
    的头像 发表于 11-21 10:58 386次阅读

    windows环境下mysql的安装

    1 下载并安装MySQL 首先输入如下命令下载Yum Repository,大概25KB的样子 [root @localhost ~ ]# wget - i - c http
    的头像 发表于 10-08 15:29 289次阅读
    windows环境下<b class='flag-5'>mysql</b>的安装

    Linux中常用的MySQL运维脚本

    在Linux中,使用MySQL进行常见的运维任务时,可以编写一些脚本来简化操作。以下是一些常用的MySQL运维脚本,希望对你的工作有所帮助。
    发表于 09-07 09:49 356次阅读

    SQLite和MySQL区别

    SQLite和MySQL区别  SQLite和MySQL是当前使用最普遍的关系型数据库软件,虽然它们都是关系型数据库,但SQLite和MySQL以不同的方式处理数据和执行查询。在使用SQLite
    的头像 发表于 08-28 17:09 2696次阅读

    MySQL运维常用脚本

    进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql>
    的头像 发表于 07-29 11:23 396次阅读

    mysql运维实用脚本序列~

    进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql>
    的头像 发表于 07-16 15:25 664次阅读

    Linux中如何使用Docker安装MySQL

    如果您是 MySQL 的新手或希望快速轻松地安装 MySQL 数据库的人,那么本文适合您,在本文中,我们将学习如何在 Linux 中使用 Docker 和 Docker compose 设置 MySQL。 让我们首先设置
    的头像 发表于 05-12 16:22 3135次阅读
    Linux中如何使用Docker安装<b class='flag-5'>MySQL</b>