首页 > 数据库 > MySQL > 正文

MySQL性能调优之查询优化的办法

2024-07-24 12:33:06
字体:
来源:转载
供稿:网友
  本篇内容介绍了“MySQL性能调优之查询优化的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
 
  一、查询慢的原因
  1、网络
 
  2、CPU
 
  3、IO
 
  4、上下文切换
 
  5、系统调用
 
  6、生成统计信息
 
  7、锁等待时间
 
  二、优化数据访问
  1、查询性能低下的主要原因是访问的数据太多,某些查询不可避免的需要筛选大量的数据,我们可以通过减少访问数据量的方式进行优化
 
  (1)确认应用程序是否在检索大量超过需要的数据
 
  (2)确认mysql服务器层是否在分析大量超过需要的数据行
 
  2、是否向数据库请求了不需要的数据
 
  (1)查询不需要的记录(我们常常会误以为mysql会只返回需要的数据,实际上mysql却是先返回全部结果再进行计算,在日常的开发习惯中,经常是先用select语句查询大量的结果,然后获取前面的N行后关闭结果集。优化方式是在查询后面添加limit)
 
  (2) 重复查询相同的数据(如果需要不断的重复执行相同的查询,且每次返回完全相同的数据,因此,基于这样的应用场景,我们可以将这部分数据缓存起来,这样的话能够提高查询效率。)
 
  三、执行过程的优化
   mysql查询完缓存之后会经过以下几个步骤:解析SQL、预处理、优化SQL执行计划,这几个步骤出现任何的错误,都可能会终止查询。
 
  (1)语法解析器和预处理
 
  mysql通过关键字将SQL语句进行解析,并生成一颗解析树,mysql解析器将使用mysql语法规则验证和解析查询,例如验证使用使用了错误的关键字或者顺序是否正确等等,预处理器会进一步检查解析树是否合法,例如表名和列名是否存在,是否有歧义,还会验证权限等等
  (2)查询优化器
 
  当语法树没有问题之后,相应的要由优化器将其转成执行计划,一条查询语句可以使用非常多的执行方式,最后都可以得到对应的结果,但是不同的执行方式带来的效率是不同的,优化器的最主要目的就是要选择最有效的执行计划。
 
  mysql使用的是基于成本的优化器,在优化的时候会尝试预测一个查询使用某种查询计划时候的成本,并选择其中成本最小的一个。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表