服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL:一条数据的存储之旅

MySQL:一条数据的存储之旅

2023-06-19 01:00未知服务器之家 Mysql

大家好,我是你们的小米,一个热爱技术分享的活泼小伙伴!今天,我来给大家揭开一个神秘的面纱,带你们深入了解一下MySQL数据库是如何保存一条数据的。 客户端 首先,让我们从客户端(Client)开始。当你在应用程序中执行一

大家好,我是你们的小米,一个热爱技术分享的活泼小伙伴!今天,我来给大家揭开一个神秘的面纱,带你们深入了解一下MySQL数据库是如何保存一条数据的。

客户端

首先,让我们从客户端(Client)开始。当你在应用程序中执行一个插入操作时,客户端就会发送一个SQL语句给MySQL服务器,告诉它你想要插入什么样的数据。

服务端

接下来,我们来看看服务器端(Server)。当MySQL服务器接收到来自客户端的SQL语句时,它会进行一系列的处理。

  • 首先,连接器(Connector)负责与客户端建立连接。它会验证你的身份信息,并且为你分配一个线程来处理你的请求。
  • 连接建立好之后,分析器(Parser)就开始发挥作用了。分析器会将你发送过来的SQL语句进行解析,拆分成一组词法单元,也就是我们所说的Token。

词法分析(Lexical Analysis)是分析器的第一步,它会将SQL语句中的每个字符进行扫描,识别出关键字、标识符、常量等。这个过程将SQL语句转换成一系列的Token,每个Token都有自己的类型和值。

  • 在词法分析之后,语法分析器(Syntax Analysis))会根据语法规则检查Token之间的关系,并构建一棵抽象语法树(AST)。抽象语法树表示了SQL语句的结构,方便后续的处理。

  • 抽象语法树(Abstract Syntax Tree)是一种树状结构,它以语法规则为基础,将SQL语句的各个部分组织起来。每个节点代表一个语法结构,比如SELECT语句、FROM子句等。

  • 在抽象语法树中,每个节点都对应着一个Token。Token存储了SQL语句的具体信息,比如关键字、标识符、常量的类型和值。

  • 当抽象语法树构建完成后,MySQL的优化器(Optimizer)登场了。优化器会对查询进行优化,选择最优的执行计划。它可以根据表的统计信息、索引信息等来做出决策。

  • 成本优化器(CBO)是MySQL优化器的一种策略,它会根据查询的成本估计来选择最佳的执行计划。CBO会考虑许多因素,比如表的大小、索引的选择、IO成本等。

  • 规则优化器(RBO)是另一种优化器策略,它会根据一组预定义的规则来选择执行计划。RBO比较简单直观,但缺乏CBO的智能化和自适应能力。

  • 优化器选择好执行计划后,执行器(Executor)就开始工作了。执行器负责实际执行查询,并将结果返回给客户端。

存储引擎

最后,让我们来看看存储引擎(Storage Engine)。MySQL支持多种存储引擎,比如InnoDB、MyISAM等。存储引擎负责将数据存储到磁盘上。

当执行器需要插入一条数据时,它会将数据传递给存储引擎。存储引擎会将数据写入到对应的表中,同时确保数据的持久性和一致性。

总结

总结一下,一条数据在MySQL中保存的过程可以分为:客户端发送SQL语句,连接器建立连接,分析器解析SQL语句生成抽象语法树,优化器选择执行计划,执行器执行查询,存储引擎将数据写入磁盘。这个过程经历了多个组件的协同工作,才能最终完成数据的保存。

MySQL:一条数据的存储之旅

延伸 · 阅读

精彩推荐
  • MysqlMySQL锁的知识点总结

    MySQL锁的知识点总结

    在本篇文章里小编给大家整理了关于MySQL锁的知识点总结以及实例内容,需要的朋友们学习下。...

    别人放弃我坚持吖4362020-12-14
  • MysqlMySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。 ...

    mysql技术网4192019-11-23
  • Mysql详解MySQL中的分组查询与连接查询语句

    详解MySQL中的分组查询与连接查询语句

    这篇文章主要介绍了MySQL中的分组查询与连接查询语句,同时还介绍了一些统计函数的用法,需要的朋友可以参考下 ...

    GALAXY_ZMY5442020-06-03
  • Mysql浅谈mysql 树形结构表设计与优化

    浅谈mysql 树形结构表设计与优化

    在诸多的管理类,办公类等系统中,树形结构展示随处可见,本文主要介绍了mysql 树形结构表设计与优化,具有一定的参考价值,感兴趣的小伙伴们可以参...

    小码农叔叔5242021-11-16
  • Mysql解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Veir_dev5592019-06-25
  • MysqlERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2 ...

    MYSQL教程网6412020-03-13
  • MysqlMySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码

    这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    逆心2972019-06-23
  • Mysqlmysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column ...

    MYSQL教程网5722019-11-25