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软件堆栈的一部分。

审核编辑:汤梓红

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

    关注

    13

    文章

    10094

    浏览量

    90883
  • MySQL
    +关注

    关注

    1

    文章

    897

    浏览量

    29234
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业数据中台支持接入MySQL数据库吗

    工业数据中台完全支持接入MySQL数据库 ,且通过数据同步、集成与治理等技术手段,能够充分发挥MySQL在数据存储与事务处理方面的优势,同时弥补其在数据分析与共享能力上的不足,具体分析如下: 技术
    的头像 发表于 12-04 11:23 185次阅读
    工业数据中台支持接入<b class='flag-5'>MySQL</b>数据库吗

    MySQL 8.0性能优化实战指南

    作为一名运维工程师,MySQL数据库优化是我们日常工作中最具挑战性的任务之一。MySQL 8.0作为当前主流版本,在性能、安全性和功能上都有了显著提升,但如何充分发挥其潜力,仍需要我们掌握正确的优化策略。
    的头像 发表于 07-24 11:48 544次阅读

    MySQL数据备份与恢复策略

    数据是企业的核心资产,MySQL作为主流的关系型数据库管理系统,其数据的安全性和可靠性至关重要。本文将深入探讨MySQL的数据备份策略、常用备份工具以及数据恢复的最佳实践,帮助运维工程师构建完善的数据保护体系。
    的头像 发表于 07-14 11:11 465次阅读

    企业级MySQL数据库管理指南

    在当今数字化时代,MySQL作为全球最受欢迎的开源关系型数据库,承载着企业核心业务数据的存储与处理。作为数据库管理员(DBA),掌握MySQL的企业级部署、优化、维护技能至关重要。本文将从实战角度出发,系统阐述MySQL在企业环
    的头像 发表于 07-09 09:50 514次阅读

    MySQL数据库是什么

    MySQL数据库是一种 开源的关系型数据库管理系统(RDBMS) ,由瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查询语言(SQL)进行数据存储、管理和操作,广泛应用于Web
    的头像 发表于 05-23 09:18 917次阅读

    除了增删改查你对MySQL还了解多少

    我们都知道MySQL服务器的默认端口为3306,之后就在这个端口号上等待客户端进程进行连接(MySQL服务器会默认监听3306端口)。
    的头像 发表于 04-14 17:20 515次阅读

    从Delphi、C++ Builder和Lazarus连接到MySQL数据库

    平台。 基于 MyDAC 的应用程序可以直接连接到 MySQL 服务器或通过 MySQL 客户端库工作MySQL 数据访问组件旨在帮助程序员更快、更轻松地开发
    的头像 发表于 01-20 13:47 1319次阅读
    从Delphi、C++ Builder和Lazarus连接到<b class='flag-5'>MySQL</b>数据库

    使用插件将Excel连接到MySQL/MariaDB

    ,可以快速地将数据从 MySQL 或 MariaDB 加载到 Excel,立即从数据库刷新 Excel 工作簿中的数据,编辑这些数据,并将它们保存回 MySQL。之后您能够像使用的 Excel
    的头像 发表于 01-20 12:38 1130次阅读
    使用插件将Excel连接到<b class='flag-5'>MySQL</b>/MariaDB

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据库

    适用于 MySQL 和 MariaDB 的 Python 连接器 Python Connector for MySQL 是一种可靠的连接解决方案,用于从 Python 应用程序访问 MySQL
    的头像 发表于 01-17 12:18 844次阅读
    适用于<b class='flag-5'>MySQL</b>和MariaDB的Python连接器:可靠的<b class='flag-5'>MySQL</b>数据连接器和数据库

    适用于MySQL和MariaDB的.NET连接器

    支持 ORM 的适用于 MySQL 和 MariaDB 的 .NET 连接器 dotConnect for MySQL 是一种高性能 ADO.NET 数据提供程序,可在开发 MySQL 的应用程序
    的头像 发表于 01-16 14:17 793次阅读
    适用于<b class='flag-5'>MySQL</b>和MariaDB的.NET连接器

    MySQL数据库的安装

    MySQL数据库的安装 【一】各种数据库的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介绍
    的头像 发表于 01-14 11:25 860次阅读
    <b class='flag-5'>MySQL</b>数据库的安装

    windows服务器备份mysql脚本

    osimport reimport datetimeimport subprocess## 需要备份数据库的登录信息mysql_host = { 'test': '10.10.3.207'}db_user
    的头像 发表于 01-02 09:14 667次阅读

    云服务器Flexus X实例,Docker集成搭建Mysql集群

    MySQL 集群是一种高可用性、高性能的数据库解决方案,旨在支持分布式应用程序,允许多个 MySQL 实例以集群的方式共同工作,提供数据冗余和故障恢复能力。
    的头像 发表于 12-29 15:44 701次阅读
    云服务器Flexus X实例,Docker集成搭建<b class='flag-5'>Mysql</b>集群

    云服务器 Flexus X 实例 MySQL 应用加速测试

    文章目录 目录 文章目录   购买配置   基本配置参考如下:   连接服务器   查询MySQL状态   启动MySQL   添加配置   添加密码并修改权限   性能测试   C#插入数据测试
    的头像 发表于 12-24 12:19 798次阅读
    云服务器 Flexus X 实例 <b class='flag-5'>MySQL</b> 应用加速测试

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
    的头像 发表于 12-16 11:05 1000次阅读
    数据库数据恢复—<b class='flag-5'>Mysql</b>数据库表记录丢失的数据恢复流程