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文章
8929浏览量
85047 -
MySQL
+关注
关注
1文章
795浏览量
26385
发布评论请先 登录
相关推荐
评论