SQL优化 mysql

本文详细介绍了SQL的执行流程,包括客户端发送、服务器解析、执行及缓存策略。重点讨论了查询语句的性能优化,如避免全表扫描、合理使用LIMIT、避免SELECT *等。此外,还探讨了多表关联时的表连接设计,提出了嵌套循环、HASH连接和排序合并连接的优化方法,并列举了多种SQL优化情况,如LIKE通配符、NOT运算、OR操作等。
摘要由CSDN通过智能技术生成

前言

项目系统开发过程中的一个重要性能优化步骤就是SQL数据库的优化

基于SQL语句开发执行流程优化简介

在解释SQL优化前,先简述一下SQL的执行过程,并提出一些简单的优化方案;
1、客户端编写并发送SQL语句:此处是SQL语句的创建过程,我们需要合理编写正确的SQL语句,比如减少不必要的数据操作、是否合理建立索引、是否利用了合理的数据操作等;
而在发送阶段还应考虑是否使用了连接池和长连接,当然这些既有好处也有坏处,客户端也需要考虑是否需要建立本地缓存,如果需要操作数据库、需要建立多少并发度的连接;

2、当客户端把SQL语句传送到服务器后,服务器进程会对该语句进行解析。解析的第一个步骤是进行高速缓存查询,这里的缓存存储的主要是已经经过SQL解析的SQL语句,它存储SQL语句的解析模板,以后遇到同一语句可以做一个快速的处理,从而跳过下一解析处理步骤;
3、当在高速缓存中找不到对应的SQL语句时,会对SQL语句的语法进行检查,看看其是否合乎语法规则。若SQL 语句符合语法上的定义的话,接下来对语句中涉及的表、索引、视图等对象进行解析,并对照数据字典检查这些对象的名称以及相关结构,看看这些字段、表、视图等是否在数据库中。当语法、语义都正确后,系统就会对我们需要查询的对象加锁。这主要是为了保障数据的一致性,防止我们在查询的过程中,其他用户对这个对象的结构发生改变。当语法、语义通过检查之后,还会检查连接用户是否有这个数据访问的权限。然后进行最佳执行计划的确定;

4、经过一系列的SQL解析处理,进入SQL的执行过程各个SQL语句都会先尝试在缓冲池中操作数据,这个缓冲池是MySQL的缓存系统,淘汰策略是LRU,如果可以扩大这个缓存的命中率,也可以优化效率,不过当缓存池的大小超过数据本身的大小,对于数据文件的操作几乎都在内存中执行,此时数据库的缓冲池性能可能达到最优,无法上升;

5、如果缓冲池中没有数据,会尝试从磁盘来进行数据的操作,如果是DML语句,还会进行redo log和undo log的记录,进行数据库的操作后会进行缓冲池的备份;在硬盘层面࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值