首页 > 数据库 >MySQL中SQL语句的执行流程

MySQL中SQL语句的执行流程

时间:2024-01-15 16:33:58浏览次数:26  
标签:语句 缓存 SQL 查询 MySQL 执行

比如有一条SQL语句

select * from tables where name = 'zhangsan';

那么这条语句通过MySQL查询,执行流程是怎么样的?
直接看图:
image

  • 1.客户端跟服务端建立连接,权限校验
  • 2.检查是否开启缓存 QueryCache,并且是否命中缓存,如果命中,直接将数据返回给客户端;没有命中则向后继续执行
  • 3.检查SQL语句是否合法,如果合法则转换为MySQL内部可执行的规则语句
  • 4.优化器根据表数据,对查询SQL生成多个可能的执行计划,并通过估算出最优的执行计划。比如索引顺序没有满足最左匹配,会自动按索引顺序重新优化顺序。这一步可以提高查询效率
  • 5.执行器安装执行计划调用存储引擎API来查询数据
  • 6.存储引擎根据查询结果获取存储于磁盘的数据。如果开启了缓存开关 QueryCache,同时会将数据缓存

标签:语句,缓存,SQL,查询,MySQL,执行
From: https://www.cnblogs.com/yangzhenlong/p/17965662

相关文章

  • 无涯教程-SQL - Where语句
    SQLWHERE子句用于在从单个表或通过与多个表联接中获取数据时指定条件,您应该使用WHERE子句来过滤记录并仅提取必要的记录。WHERE子句不仅在SELECT语句中使用,而且在UPDATE,DELETE语句等中使用,无涯教程将在后续章节中进行研究。Where-语法带有WHERE子句的SELECT语句的基本语......
  • 常用的MySQL备份/还原 的方法
    mysql备份数据库mysql备份单个数据库#mysql备份某个库格式:mysqldump-h主机名-P端口-u用户名-p"密码"--database数据库名>文件名.sql#实例:mysql备份某个库:mysqldump-h10.*.*.9-P3306-uroot-p"密码"--single-transaction--master-data=2--set-gtid-purged=OF......
  • mysql 目录迁移注意事项
    修改vi/etc/my.cnfdatadir=/home/data/mysqlsocket=/home/data/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid 1、权限问题Jobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemct......
  • 金蝶K3Cloud MSSQL CTE BOM反查
    1DROPTABLEJZC_MATERIALIDS2CREATETABLEJZC_MATERIALIDS(FMaterialIdINT)3INSERTJZC_MATERIALIDS(FMaterialId)VALUES(316344)45SELECT*FROMJZC_MATERIALIDS6SELECT*FROMdbo.T_BD_MATERIALWHEREFNUMBER='CL001'78WITHC......
  • 无涯教程-SQL - 选择数据(Select)
    SQLSELECT语句用于从数据库表中获取数据,该数据库表以输出表的形式返回该数据,这些输出表称为输出集。SelectQuery-语法SELECT语句的基本语法如下-SELECTcolumn1,column2,columnNFROMtable_name;在这里,column1,column2...是要获取其值的表的字段。如果要获取该字段......
  • docker mysql8使用SSL及使用openssl生成自定义证书
    修改my.cnfvi/docker_data/mysql/conf/my.cnf[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]character-set-server=utf8mb4default_authentication_plugin=mysql_native_password#增加sslssl保存,重启mysql容器dockerrestartmysql-8.0.23......
  • 无涯教程-SQL - 选择数据库
    如果您的SQL架构中有多个数据库,则在开始操作之前,您需要选择一个数据库,在该数据库中将执行所有操作。SQLUSE语句用于选择SQL模式中的任何现有数据库。SelectDatabase-语法USE语句的基本语法如下所示-USEDatabaseName;数据库名称在RDBMS中始终应该是唯一的。SelectDa......
  • 无涯教程-SQL - 删除数据库
    SQLDROPDATABASE语句用于删除SQL模式中的现有数据库。DropDatabase-语法DROPDATABASE语句的基本语法如下:DROPDATABASEDatabaseName;数据库名称在RDBMS中始终应该是唯一的。DropDatabase-示例如果要删除现有数据库,则DROPDATABASE语句将如下所示-SQL>DROPD......
  • kettle从入门到精通 第三十课 mysql 数据连接常用配置
    1、我们平常用的最多的数据库就是mysql了,这里我以mysql为例说下数据库连接池配置。为啥要用连接池,因为数据库建立连接很费性能,所以就建立连接池(提前建立好一批连接)缓存起来提高性能。下图中mysql的设置参数,提前是需要把mysql的jar(如mysql-connector-java-8.0.20.jar)放到kettle文......
  • 为什么C#要采用顶级语句?
    前言有群友问:为什么C#要采用顶级语句?.NET6发布后,C#10莫名引入了顶级语句,这是一种简化代码结构的语言特性。在此之前,C#程序必须包含一个入口点,通常是Main方法,然后在该方法中编写主要的程序逻辑。而使用顶级语句后,可以直接在文件的顶部编写执行代码,而无需显式地定义一个Main方法。......