zoukankan      html  css  js  c++  java
  • 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讲笔记一

  • 相关阅读:
    以太坊 生成助记词和infuru插件
    结束端口占用
    web3无法安装的额解决方案-----yarn命令安装web3
    npm无法安装全局web3的问题
    censeOs账户
    linux go环境安装
    一款非常好用的chrome插件Postman
    js页面刷新的方法location.reload()
    学会使用DNSPod,仅需三步
    wordpress博客服务器迁移过程中总结
  • 原文地址:https://www.cnblogs.com/fly-bryant/p/13179625.html
Copyright © 2011-2022 走看看