• MySQL一条查询语句是如何执行的


    MySQL的基本架构大体可以分为server层和存储引擎层,逻辑架构图如下:

    Server层除了图中显示的,还包括所有的内置函数(包括日期、时间、数学和加密函数等),存储过程、触发器、视图等跨存储引擎的功能都在这层实现。

    存储引擎层负责数据的存储和提取,支持InnoDB、MyISAM、Memory等,从MySQL 5.5.5版本开始InnoDB成为默认的存储引擎。

    1. 连接器

      连接器负责跟客户端建立连接、获取权限、维持和管理连接。数据库里面的连接分为长连接和端连接,和tcp的连接类似。长连接过多会占用内存太大,从而出现OOM。可以考虑定期断开长连接,尤其是执行过一个占用内存的大查询;5.7版本以后可以执行 myssql_reset_connection来重新初始化连接资源。

    2. 查询缓存

      执行查询语句时,如果之前执行过那么语句和结果可能会以key(语句)-value(结果)直接缓存在内存中。

      不建议使用查询缓存,因为只要有一个表更新,那么这张表上所有查询缓存都会被清空。8.0版本后删除了此功能。

    3. 分析器

      分析器对SQL语句做解析,先做词法分析,例如‘“select”-->查询语句;再做语法分析。

    4. 优化器

      表里多个索引决定用哪个或者关联查询时决定表的连接顺序

    5. 执行器

      • 先判断用户对表T有没有执行权限,没有则返回错误
      • 有就调用指定引擎提供的接口,一行一行遍历表,将所有满足条件的行组成的记录集作为结果返回给客户端

       - - MySQL实战45讲笔记一

  • 相关阅读:
    Python 标准库 BaseHTTPServer 中文翻译
    DBA Scripts
    cordova开发自己定义插件
    ASUS主板ALC887声卡,RTL81XX网卡,黑苹果驱动安装
    com.apple.installer.pagecontroller 错误 -1 pkg安装错误
    Apple 远程推送APNS 服务
    bitbucket git push 项目503失败
    在xcode5下利用Source Control 做 git 项目管理
    iOS设备定位服务开启判定
    has been modified since the precompiled header地图错误
  • 原文地址:https://www.cnblogs.com/fly-bryant/p/13179625.html
Copyright © 2020-2023  润新知