mysql 语句执行流程

mysql 架构图

select 执行流程

  • 连接器
    • 经过 tcp 三次握手建立连接成功后,mysql 服务器对 tcp 传输过来的账号密码做身份认证、权限获取
  • 查询缓存:8.0 取消
    • 查询缓存的使用:
      • 当一个查询请求到达 MySQL 服务器时,服务器会先检查查询缓存中是否已经存在相同查询的结果。
  • 解析器
    • 当 MySQL 接收到一条查询 SQL 后,在解析器中对 SQL 语句进行语法分析、语义分析,以便 MySQL 能够理解和处理。判断语法是否正确。
  • 优化器(Optimizer)
    • 优化器负责对 SQL 查询进行优化,根据数据库的统计信息、索引、表大小等因素,决定了 SQL 查询的执行计划,以提高执行效率减少查询的执行时间和资源消耗。
  • 执行器(Executor)
    • 执行器根据执行计划执行 SQL 查询,包括读取数据、执行操作和返回结果等。执行器与存储引擎进行交互,从存储引擎中读取数据,并根据执行计划执行各种操作。
  • 存储引擎
    • 真正的负责了MySQL中数据的存储和提取,对物理服务器级别 维护的底层数据执行操作 ,服务器通过API与存储引擎进行通信。常用存储引擎:InnoDB,MylSAM

查询缓存

  • 查询缓存的使用:
    • 当一个查询请求到达 MySQL 服务器时,服务器会先检查查询缓存中是否已经存在相同查询的结果。
    • 如果查询缓存中存在相同查询的结果且缓存未过期,MySQL 会直接返回缓存中的结果,而不需要再次执行查询。
    • 如果查询缓存中不存在相同查询的结果,MySQL 会执行查询并将结果存储在查询缓存中,以备后续相同查询使用。
  • 缓存命中条件:
    • 查询必须是完全相同的字符串,包括大小写、空格、注释等,才能命中缓存。
    • 查询缓存不适用于涉及临时表、用户自定义函数、存储过程和锁定的查询。
    • 查询缓存不支持带有用户变量的查询。
      • 缓存失效机制:
        • 当一个表的内容发生更改(例如 INSERT、UPDATE、DELETE 操作),该表相关的所有缓存条目都会失效。
        • 表结构的变更(例如 ALTER TABLE)也会导致相关缓存条目失效。
        • 可以使用 RESET QUERY CACHE 命令手动清除整个查询缓存。
  • 查询缓存的优缺点
    • 缺点:
      • 维护成本:每次数据表发生变化时,相关缓存条目都会失效并需要重新缓存,增加了缓存维护的成本。
      • 缓存命中率:在频繁更新的数据库中,查询缓存的命中率较低,因为缓存条目容易失效。
      • 管理复杂性:需要合理配置缓存大小和相关参数,以避免缓存过多占用内存资源。
    • 优点:
      • 性能提升:对于频繁执行的相同查询,可以显著提高查询响应速度,减少服务器负载。
      • 资源节省:减少了对数据库的访问次数,节省了 IO 和计算资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值