MySQL-SQL执行流程及原理

1、SQL执行流程

在这里插入图片描述

2、查询流程

  • 查询缓存: MySQL服务器如果在查询缓存中存在该SQL语句,就直接将结果返回给客户端,没有就进入解析器解析阶段。(MySQL 8.0 删除该功能
  • 解析器:在解析器中对SQL语句进行语法及语义分析
  • 查询优化器:在优化器中确定SQL语句的执行路径,比如:根据 全表检索索引检索。优化器的作用就是找到最好的执行计划。可以分为逻辑查询优化阶段(“通过SQL等价变化”提升查询效率)物理查询优化阶段(“通过索引和表的连接方式”进行优化)
  • 执行器:在执行之前判断当前连接用户是否具备执行权限。没有则返回权限错误,有则执行SQL查询并返回结果。

3、执行原理

①MySQL8.0中SQL执行原理

  • 确认profiling是否开启,执行select @@profilingshow variables like '%prifiling%'查看是否开启计划,开启后可以收集SQL执行时所使用的资源情况。profiling=0 代表关闭,设置为profiling=1表示开启
mysql> show variables like '%profiling%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| have_profiling         | YES   |
| profiling              | OFF   |
| profiling_history_size | 15    |
+------------------------+-------+
3 rows in set (8.27 sec)
mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
|           0 |
+-------------+
1 row in set, 1 warning (0.25 sec)

mysql> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.08 sec)

mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
|           1 |
+-------------+
1 row in set, 1 warning (0.01 sec)

  • 执行相关SQL脚本
  • 查看profiles:执行 show profile 和 show profiles 语句可以展示当前会话中执行语句的资源使用情况
mysql> show profiles;
+----------+------------+-----------------------------------+
| Query_ID | Duration   | Query                             |
+----------+------------+-----------------------------------+
|        1 | 0.01602275 | select @@profiling                |
|        2 | 0.59588800 | show variables like '%profiling%' |
|        3 | 2.45071500 | show databases                    |
|        4 | 0.08227075 | SELECT DATABASE()                 |
|        5 | 0.03805175 | show databases                    |
|        6 | 1.01924225 | show tables                       |
|        7 | 0.04931425 | SELECT DATABASE()                 |
|        8 | 0.00020850 | show profiling                    |
+----------+------------+-----------------------------------+
8 rows in set, 1 warning (0.05 sec)

  • 查看profile:默认查询最近一次SQL语句执行情况
mysql> show profile;
+---------------+----------+
| Status        | Duration |
+---------------+----------+
| starting      | 0.000125 |
| freeing items | 0.000062 |
| cleaning up   | 0.000022 |
+---------------+----------+
3 rows in set, 1 warning (0.17 sec)

如果查看执行某一次SQL执行情况,执行:show profile for query num(num 表示上述show profiles 语句返回的 query_id),如下所示

mysql> show profile for query 7;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000052 |
| checking permissions | 0.000007 |
| Opening tables       | 0.000011 |
| init                 | 0.000005 |
| optimizing           | 0.000008 |
| executing            | 0.000009 |
| end                  | 0.000003 |
| query end            | 0.000006 |
| closing tables       | 0.000004 |
| freeing items        | 0.000009 |
| cleaning up          | 0.049202 |
+----------------------+----------+
11 rows in set, 1 warning (0.11 sec)

  • 通过查看 show profile all 可以查看MySQL服务器在执行SQL语句时内存,cpu等相关信息。
mysql> show profile all\G
*************************** 1. row ***************************
             Status: starting
           Duration: 0.140282
           CPU_user: 0.068184
         CPU_system: 0.071855
  Context_voluntary: 5
Context_involuntary: 2
       Block_ops_in: 0
      Block_ops_out: 0
      Messages_sent: 0
  Messages_received: 0
  Page_faults_major: 0
  Page_faults_minor: 0
              Swaps: 0
    Source_function: NULL
        Source_file: NULL
        Source_line: NULL
*************************** 2. row ***************************
             Status: freeing items
           Duration: 0.040331
           CPU_user: 0.020129
         CPU_system: 0.020204
  Context_voluntary: 0
Context_involuntary: 0
       Block_ops_in: 0
      Block_ops_out: 0
      Messages_sent: 0
  Messages_received: 0
  Page_faults_major: 0
  Page_faults_minor: 0
              Swaps: 0
    Source_function: dispatch_sql_command
        Source_file: sql_parse.cc
        Source_line: 5042
*************************** 3. row ***************************
             Status: cleaning up
           Duration: 0.000018
           CPU_user: 0.000004
         CPU_system: 0.000006
  Context_voluntary: 0
Context_involuntary: 0
       Block_ops_in: 0
      Block_ops_out: 0
      Messages_sent: 0
  Messages_received: 0
  Page_faults_major: 0
  Page_faults_minor: 0
              Swaps: 0
    Source_function: dispatch_command
        Source_file: sql_parse.cc
        Source_line: 2252
3 rows in set, 1 warning (0.00 sec)

②MySQL5.7中SQL执行原理

  • 配置文件中开启查询缓存
[root@rqtanc ~]# vim /etc/my.cnf

[mysqld]
query_cache_type=1

[root@rqtanc ~]# systemctl restart mysqld
  • 后续同 MySQL8.0中SQL执行原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/590843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL常见问题解决和自动化安装脚本

常见问题 MySQL密码正确但无法登录的情况 这种情况一般都是因为缓存,使用mysql -u root -p123456直到成功登陆为止,并且进入之后重新修改密码,多次重复修改密码的命令并且再一次清除缓存后退出。 ALTER USER rootlocalhost IDENTIFIED WIT…

华为Pura70发布,供应链公司进入静默保密期

保密措施:与华为Pura70发布相关的供应链公司在产品发布前后处于静默保密期。这可能是由于华为对于手机供应链的一些信息处于保密状态,尤其是关于麒麟芯片的代工厂商等敏感信息。这种保密措施有助于保持产品的神秘感,调动用户的好奇心&#xf…

Linux中线程管理命令,查看ps和kill实操记录

Linux中线程管理命令,查看ps和kill实操记录 ps命令实例操作参考链接 写的目的是,笔者在服务器的使用中遇到了这个知识点,并且进行学习和使用,希望在这里记录和加深印象,方便以后回忆和其他读者的学习。 具体的情景是&a…

算法数据结构--单调栈

文章目录 介绍单调递增栈单调递减栈图示应用场景 步骤模板Deque用法例题[739. 每日温度](https://leetcode.cn/problems/daily-temperatures/)[496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) 总结 介绍 单调栈是一种特殊的栈数据结构&#x…

快讯! MySQL 8.4.0 LTS 发布(MySQL 第一个长期支持版本)

MySQL 第一个长期支持版本 8.4.0 LTS 发布,社区版下载地址: https://dev.mysql.com/downloads/mysql/ 功能变更 添加或更改的功能 组复制:与组复制相关的两个服务器系统变量的默认值已更改: 系统变量的默认值为 group_replication…

TS学习-泛型基础

目录 1,介绍1,在函数中使用2,在类型别名,接口中使用3,在类中使用 2,泛型约束3,多泛型4,举例实现 Map 1,介绍 泛型相当于是一个类型变量,有时无法预先知道具体…

JavaWeb--1.Servlet

Servlet&#xff08;基础&#xff09; 1、配置依赖&#xff1a; ​ 在pom.xml文件中加入相关依赖 <dependencies><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0&l…

数据结构--栈与队列【您的关注是我创作的动力!】

文章目录 栈什么是栈&#xff1f;栈的具体实现 队列什么是队列&#xff1f;队列的实现 栈 什么是栈&#xff1f; 栈也是顺序表的一种&#xff0c;栈的逻辑实现是先进后出&#xff08;后进先出&#xff09;就跟子弹夹一样。 具体逻辑就是它只允许在固定的一端进行数据的插入与…

eNSP-抓包解析HTTP、FTP、DNS协议

一、环境搭建 1.http服务器搭建 2.FTP服务器搭建 3.DNS服务器搭建 二、抓包 三、http协议 1.HTTP协议&#xff0c;建立在FTP协议之上 2.http请求 3.http响应 请求响应报文参考&#xff1a;https://it-chengzi.blog.csdn.net/article/details/113809803 4.浏览器开发者工具抓包…

C++ 函数 参数与返回值

#一 参数与返回值 回顾文件读数据功能 文件读数据 1函数参数传值调用过程 将函数调用语句中的实参的一份副本传给函数的型材。 简单的值的传递&#xff0c;实参的值没有发生变化。 2 函数参数传值调用过程 传地址调用 将变量的地址传递给函数的形参 形参和实参指向了同…

webpack与vite

webpack 使用步骤&#xff1a; 初始化项目 pnpm init -y安装依赖webpack、webpack-cli在项目中创建src目录&#xff0c;然后编写代码&#xff08;index.js&#xff09;执行pnpm weboack来对代码进行打包&#xff08;打包后观察dist文件夹&#xff09; 配置古文件&#xff08;w…

数智新重庆 | 推进信号升格 打造算力山城

2024年&#xff0c;是实现“十四五”规划目标任务的关键一年&#xff0c;高质量的5G网络、强大的AI能力作为新质生产力的重要组成部分&#xff0c;将有效赋能包括制造业在内的千行万业数字化化、智能化、绿色化转型升级&#xff0c;推动融合应用新业态、新模式蓬勃兴起&#xf…

字符函数与字符串函数(2)

遇见她如春水映莲花 字符函数与字符串函数&#xff08;2&#xff09; 前言一、strcatstrncat 二、strcmpstrncmp在这里插入图片描述 三、strstr四、strtok五、strerror总结 前言 根据上期字符函数与字符串函数我们可以了解到字符函数与个别字符串函数的用法&#xff0c; 那么接…

SQL注入less-1

一、启动SQL注入的靶场 1、启动phpstudy 注&#xff1a;phpstudy默认的php版本为7.x&#xff0c;想要成功的搭建靶场&#xff0c;需要把php版本改为5.x 2、输入127地址加文件名 进入此界面后点击setup就行 3、进入less-1的关卡 靶场搭建成功 二、查看less-1的代码 注&#…

什么?300TB SSD要来了?

SK海力士在韩国首尔的一场新闻发布会上宣布&#xff0c;其正在研发一款前所未有的300TB容量的固态硬盘&#xff08;SSD&#xff09;。这款硬盘的预告是该公司一系列旨在推动数据中心和设备端AI能力发展的产品与技术组合的一部分。SK海力士引用市场研究预测&#xff0c;全球在AI…

每日一题(力扣740):删除并获得点数--dp+思维

其实跟打家劫舍没啥区别 排序去重之后去考虑当前位置和前两个位置之间的关系即可&#xff0c;具体见代码&#xff1a; class Solution { public:int deleteAndEarn(vector<int>& nums) {int n nums.size();if (n 1) return nums[0];unordered_map<int, int>…

代码随想录算法训练营DAY51|C++动态规划Part12|1143.最长公共子序列、1035.不相交的线、53.最大子序列和

文章目录 1143.最长公共子序列思路CPP代码 1035.不相交的线53.最大子序列和思路CPP代码 1143.最长公共子序列 力扣题目链接 文章讲解&#xff1a;1143.最长公共子序列 视频讲解&#xff1a;动态规划子序列问题经典题目 | LeetCode&#xff1a;1143.最长公共子序列 本题其实就跟…

GPU虚拟化和算力隔离探讨

1. 术语介绍 术语 全称 说明 GPU Graphics Processing Unit 显卡 CUDA Compute Unified Device Architecture 英伟达2006年推出的计算API VT/VT-x/VT-d Intel Virtualization Technology -x表示x86 CPU&#xff0c;-d表示Device SVM AMD Secure Virtual Machine …

ASP.NET视频点播系统的设计与实现

摘 要 本文阐述了基于WEB的交互式视频点播系统的协议原理、软件结构和设计实现。本视频点播系统根据流媒体传输原理&#xff0c;在校园局域网的基础上模拟基于Web的视频点播系统&#xff0c;实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个…

6.块元素和行内元素

块元素 无论内容多少&#xff0c;该元素独占一行(p、 h1-h6…) 例子如下图 行内元素 内容撑开宽度&#xff0c;左右都是行内元素的可以排在一排(a、 strong、 em …) 例子如下 感谢您的观看&#xff0c;能和您一起学习是我最大的荣幸&#xff01; 文章学习资料&#xff1a;…