一条查询语句在MySQL的处理过程

news/2025/2/22 19:02:43/

例如查询语句:

select user_id、username from t_user where username = "张三" and sex = 1;

其在MySQL的执行流程如下:

  1. 客户端发起查询请求,与SQL 接口建立连接,SQL 接口确定用户是否有查询权限,没有权限,直接返回错误信息,有执行下一步。
  2. 查询缓存(MySQL8.0 以前),以这条SQL语句为key在内存缓冲池中是否有结果,有直接返回结果,无则执行下一步。
  3. 解析器进行词法分析,提取出操作为select, 表名为 t_user, 查询字段为user_id、username,查询条件为username=“张三” 和 sex=1 ,把提取的Token转换为抽象语法树,接下来判断这个 sql 语句是否有语法错误,比如关键词是否正确等等,如果检查没问题就执行下一步。如下图:
  4. 优化器列出可能的执行方案:
    a. 先查询t_user表中username=“张三”的学生,然后判断是否性别为男。
    b. 先找出学生中性别是男的学生,然后再查询username为“张三”的学生。
    接下来计算两个查询计划的成本,若username字段为索引,usrname和sex为联合索引、或查询条件可能致使索引失效,查询字段为*,造成成全表扫描,都有可能影响执行方案的选择。
     
  5. 执行器进行权限校验,如果没有权限就会返回错误信息,如果有权限就执行器会调用数据库引擎接口,返回引擎的执行结果。
  6. 执行引擎根据执行计划查询数据,并把结果集返回客户端。

 

注意:

MySQL 8.0 取消了查询缓存是因为查询缓存对于高并发、大规模数据的应用程序效果不佳,甚至可能成为性能瓶颈。

  • 查询缓存影响并发性能:MySQL在执行SELECT查询时,首先会去查询缓存中查找是否存在相同的查询语句和结果集,如果存在,则直接返回结果。然而,当并发用户越来越多时,这种缓存机制会导致大量请求阻塞在同一个锁上,从而降低了并发性能。

  • 查询缓存占用大量内存:查询缓存将所有查询的结果存储在内存中,因此,当数据库中的数据量越来越大时,查询缓存会占用越来越多的内存,从而导致内存不足和OOM等问题。

  • 查询缓存存在数据一致性问题:当数据表发生修改时,缓存中的数据可能就不再是最新的数据,而引入一致性问题。

       总而言之,取消了查询缓存是为了提高数据库的性能和可靠性。MySQL 8.0引入了其他一些性能优化措施,如基于字节码的查询优化器、InnoDB缓冲池大小自动调整等,以提高数据库的性能和可靠性。


http://www.ppmy.cn/news/71598.html

相关文章

应用案例 | 使用dataFEED OPC Tunnel解决基于DCOM的OPC Classic通信难题

一 背景 OPC(OLE for Process Control)Classic是一种基于COM(Component Object Model)的协议,用于在工业控制系统中实现数据通信和集成。它为工业自动化提供了一种标准接口,可使不同厂商的设备和系统之间进…

与小我11岁的人一次PK

基本情况 时间过得很快,如同流水一般。 我的同事F已经离职一段时间了,怎么说呢? 公司领导的想让我们进行PK,谁是胜利者,谁留下,这的确与别的公司不同,别的公司通过面试,公司领导感觉那样不足体…

springboot+java+jsp网上超市水果蔬菜果蔬商城购物管理系统

本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的 通过前面的功能分析可以将超市果蔬管理系统的功能分为管理员,员工和用户三个部分,系统的主要功能包…

使用底层代码(无框架)实现卷积神经网络理解CNN逻辑

首先将数据集放入和底下代码同一目录中,然后导入一些相关函数的文件cnn_utils.py: import math import numpy as np import h5py import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.python.framework import ops def load_data…

腾讯云宣布多款核心产品降价,最高降幅达40%

5月16日,腾讯云宣布对多款核心云产品降价,部分产品线最高降幅达40%,降价政策将在6月1日正式生效。 腾讯集团副总裁、云与智慧产业事业群COO、腾讯云总裁邱跃鹏表示:“在健康可持续战略下,腾讯云更加聚焦产品。我们通过…

【嵌入式环境下linux内核及驱动学习笔记-(12-设备树操作函数)】

目录 1、设备树对应的数据结构1.1 struct device_node1.2 struct property 2、设备树操作函数2.1 查找字点的函数2.1.1 of_find_node_by_path2.1.2 of_find_node_by_name2.1.3 of_find_node_by_type2.1.4 of_find_compatible_node2.1.5 of_find_node_by_phandle2.1.6 of_get_ch…

PAT A1059 Prime Factors

1059 Prime Factors 分数 25 作者 HE, Qinming 单位 浙江大学 Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N p1​k1​p2​k2​⋯pm​km​. Input Specification: Each input file contains one t…

【敬伟ps教程】历史工具、画笔、橡皮擦

文章目录 历史工具面板上的操作按历史记录选项历史记录画笔历史记录艺术画笔 画笔工具画笔基本操作画笔预设画笔面板 铅笔工具背景橡皮擦魔术橡皮擦 历史工具 窗口–历史记录 历史记录是从上到下是操作步骤,编辑时会有很多历史记录,点击下方删除按钮可删…