• SQL的执行过程讲解 Linux运维


    1.MySQL 属于CS结构即客户端/服务端,Client、Server。其中server层包含连接层、SQL层、存储引擎层

        

    2.Server端的连接层、SQL层、存储引擎层

    连接层(Connector):负责跟客户端建立连接、获取权限、维持和管理连接。
    
    
    SQL 层:预处理、解析、优化(物理优化、逻辑优化)、生成指定的执行计划。
    
    
    存储引擎层:负责数据的存储和提取,支持 InnoDB、MyISAM、Memory 等多个存储引擎。

    3.连接层

    作用:提供连接协议、验证、提供专用连接线程
    命令:mysql -h$ip -P$port -u$user -p  
    客户端发送请求服务端,通过一串字符串连接到整个服务端,同时服务端的连接层接收到请求后,对客户端提供的字符串进行验证,连接层提供协议、验证、再提供一个专有的连接线程。
    其中协议有:TCP/IP、Socket文件。
    验证:用户名、密码、端口进行验证,数据库启动后会将授权表加载到内存中,进行用户名,密码,端口进行比对验证。其中授权表包含:mysql.user、mysql.db、mysql_table.priv、mysql_column_priv.
    连接线程:每连接一个都会生成一个连接线程,所以会有多个连接线程.通过show processlist; 可以查看到前台线程。

    4.SQL层

    主要分为四个阶段:预处理、解析、优化、执行语句

    预处理:判断语句中的语法、语义、权限处理等。

    解析:校验OK,就生成“解析树”,把语句拆分成多个块,生成一种树形结构来表示执行顺序。解析出来的树叫抽像语法树AST。

    优化:分为逻辑优化-->物理优化。基于 Cost-Based Optimizer 模型,预估每条执行方式的成本,选择成本最小的执行方式,最终转化为执行计划explain
    逻辑优化:优化器算法--->关系代数的等价转换
    物理优化:统计信息(表的状态信息,比如表名、数据行、数据分布、索引状态信息)、优化器算法
    执行:根据执行计划去执行语句

    5.存储引擎层

    作用:负责和磁盘交互

     

  • 相关阅读:
    Ajax实现文件下载
    jquery easyui 插件开发
    Chrome谷歌浏览器首页被改为Hao123导航怎么办|附各类解决方法【转】
    查看mysql版本的四种方法
    IntelliJ IDEA 快捷键大全
    Java中判断字符串是否为数字的五种方法
    比数据分析更要命的是:数据质量
    Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?
    大数据需要好设计
    Python模块学习filecmp文件比较
  • 原文地址:https://www.cnblogs.com/linuxmysql/p/16197045.html
Copyright © 2020-2023  润新知