美文网首页
数据库的查询流程, 2022-08-11

数据库的查询流程, 2022-08-11

作者: Mc杰夫 | 来源:发表于2022-08-12 12:23 被阅读0次

    (2022.08.11 Thur)
    对数据库查询,按其处理流程可分为

    • 客户端的请求被数据库连接器接收
    • server层处理
    • 存储引擎处理
    • 返回结果

    (2022.08.12 Fri)
    基本流程框图如下


    MySQL query processing

    其中的连接器常被认为是server layer的一部分。

    • 连接器
      连接器负责跟客户端建立连接、获取权限、维持和管理连接
    • 查询缓存
      服务的查询缓存,如果能找到对应的查询,则不必进行查询解析,优化,执行等过程,直接返回缓存中的结果集。运行独立的缓存服务,在架构层面优化了查询速度。
    • 服务器层
      服务器层分为多个部分,包括parser解析器,optimiser优化器,和执行器。
      • parser
        在将查询转换为关系代数后,数据库执行三个方面的检测,即解析,syntax check,semantic check和Shared pool check。
        • Syntax check语法检测 - 检测SQL语法可用性,如SLECT * FM table_a这个查询中的SLECTFM都是错误拼写,由语法检测不愁检测出
        • Semantic check语义检测 - 检测查询语句是否有意义,比如FROM table_x这个语句中的表名table_x不存在,则在语义检测被查出
        • Shared Pool check共享池检测 - 在执行过程中每个查询都拥有一个哈希码,共享池检测将决定写入哈希码是否存在于共享池中。若存在,则DBMS将不再执行优化和执行的步骤,这种情况被称为soft parsing。相对应的,需要完成优化和执行的parsing称为hard parsing。
      • Optimiser优化器
        在优化阶段,数据库针对DML命令执行hard parsing,并在parse过程中优化。这个过程中,数据库检测满足一个查询的多种查询执行方案(execution plan),并选出其中最高效的查询方案用于执行,执行方案保存在数据库目录(db catalog)中。
      • Row source generation行源生成
        行源生成用于从优化器接收最优执行方案,并产生被数据库其他部分使用的迭代执行方案(iterative execution plan)。迭代执行方案指的是被SQL引擎执行时会生成结果集的二元程序(binary programme)。

    经过了服务器层的处理,执行方案被送往存储引擎进行查询,并返回结果。

    Reference

    1 SQL query processing, Geeksforgeeks
    2 MYSQL查询和插入数据的流程是怎样的,大魔王先生,博客园
    3 详解mysql更新执行步骤,乔帮主,简书

    相关文章

      网友评论

          本文标题:数据库的查询流程, 2022-08-11

          本文链接:https://www.haomeiwen.com/subject/boctgrtx.html