1、优化步骤

1、开启慢查询日志,设置阈值,比如超过五秒的就是慢sql,并将它抓取出来

慢查询日志,是mysql提供的一种日志记录,它用来记录mysql中响应超过阈值的语句,具体指运行时间超过long_query_time值的sql。
会被记录到慢查询日志中。long_query_time默认值为10,意思是10秒以上的语句。默认情况下,mysql没有开启慢查询,需要手动设置。
如果不是调优需要,一般不建议启动该参数。
查看是否开启:SHOW VARIABLES LIKE "%slow_query_log"
开启:set global slow_query_log=1;只对当前数据库生效,如果mysql重启后则会失效;如果要永久生效,必须修改配置文件my.cnf
windows下是my.ini;
[mysqld]下增加或修改参数 slow_query_log和slow_query_log_file后,重启mysql服务器。
查看阈值:SHOW VARIABLES LIKE "long_query_time",默认是10s;
设置阈值:set global long_query_time=3;超过3s之后才会记录;可以使用select sleep(5)去验证
mysql提供慢sql日志分析工具:mysqldumpslow

mysqldumpslow 解析见mysqldumpslow参数解析 这篇文章

2、explain +慢sql分析
针对参数进行解析,分析问题出在哪里,然后进行优化;
各个参数含义可参照explain参数详细解析这 篇文章。

3、show profile 查询sql在mysql服务器里面的执行细节和生命周期情况
官网链接跳转地址

show profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于sql的调优的测量
默认情况下,参数处于关闭状态,并保存最近15次的运行结果
分析步骤1、是否支持,查看当前mysql版本是否支持show variables like "profiling"2、开启功能,默认是关闭。使用前需要开启set profiling on;3、运行sql4、查看结果 show profiles;5、诊断sql。show profile cpu,block io for query 第四步查询出来的id;6、第五步出现的需要处理的大概问题提示:converting HEAP to MYASIM 查询结果太大,内存不够用开启磁盘使用;creating temp table 创建临时表。cpoy数据到临时表,用完再删除Copying to temp table on disk 把内存中临时表复制到磁盘;locked;

4、sql数据库服务器的参数调优

2、优化原则

永远小表驱动大表,即小的数据集驱动大的数据集;
exists 查询主表在子查询内是否存在数据;
尽量使用覆盖索引;
where条件尽量满足索引;

3、order by 关键字优化:

mysql 两种排序方式:
文件排序或者有序索引排序;filesort或者usingindex;

filesort有两种排序算法

1、双路排序,mysql4.1之前是使用双路排序,字面意思是两次扫描磁盘,最终得到数据。读取行指针和orderby列。对他们进行排序,
然后扫描已经排序好的列表。按照列表中的值重新从列表中获取对应数据进行输出;
从磁盘中取排序字段,在buffer进行排序,再从磁盘取其他字段。
2、单路排序。从磁盘读取查询需要的所有列,按照order by 列在buffer对他们进行排序,然后扫描排序后的列表进行输出。他的效率更快一些,避免了二
次读取数据。并且把随机io变成了顺序io。但是他会使用更多的空间。因为他把每一行都保存在内存中。
但是单路存在问题,在sort_buffer中,方法b比方法a要多占用很多空间,因为方法b是把所有字段都取出,所以有可能取出的数据的总大小超出了
sort_buffer的容量,导致每次只能取sort_buffer容量大小的数据进行排序(创建temp文件,多路合并),排完再取sort_buffer容量大小,再
排。。。。从而多次i/o。

提高order by 的查询速度

1.select * 禁止,只query 需要的字段
1.1当query的字段大小总和小于max_length_for_sort_data而且排序字段不是text|blob类型时,会用改进后的算法–单路排序,否则使用老算法–多路排序。
1.2两种算法的数据都有可能超出sort_buffer的容量,超出之后,会创建temp文件进行合并排序,导致多次的i/o但用单路排序算法的风险会更大一些,所以要提高sort_buffer_size;

2.尝试提高sort_buffer_size
不管用哪种算法,提高这个参数都会提高效率,当然,要根据系统的能力去提高,因为这个参数是针对每个进程的。

3.尝试提高max_length_for_sort_data
max_length_for_sort_data默认值是1024,mysql根据max_length_for_sort_data变量来确定使用哪种算法。如果需要返回的列的总长度大于此参数,则使用第一种,否则使用第二种。
提高这个参数,会增加用改进算法的概率。但是如果设置的太高,数据总容量超过sort_buffer_size概率就增大。明显症状是高的磁盘i/o活动和低的处理器使用率。

优化策略
order by 能使用两种索引来避免文件排序,1、order by的列全出现在索引中。2、order by中使用了索引的一部分,where中出现索引的另一部分且where中的部分是常量。满足最左匹配原则。

4、group by 关键字优化

group by 实质是先排序后进行分组,遵照索引建的最佳左前缀
当无法使用索引列,优化方案同order by;
where 高于having ,能写在where限定的条件,就不要用having限制了;

mysql优化步骤及方法相关推荐

  1. mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)...

    mysql数据库优化课程---15.mysql优化步骤(mysql中最常用最立竿见影的优化是什么) 一.总结 一句话总结:索引优化最立竿见影 索引优化:不然有多少行要扫描多少次,1亿行大概是5到10分 ...

  2. 通过SQL Server操作MySQL的步骤和方法

    在多种数据库环境下,经常会遇见在不同数据库之间转换数据和互相进行操作的情况.以下简要介绍下用SQL Server操作MySQL的步骤和方法. 1 操作前的准备 1.1 安装MySQL驱动 想要在SQL ...

  3. mysql缓存优化,MySQL优化步骤及my.cnf缓存优化

    MySQL优化步骤及my.cnf缓存优化 1.看机器配置,指三大件:cpu.内存.硬盘 2.看mysql配置参数 3.查系mysql行状态,可以用mysqlreport工具来查看 4.查看mysql的 ...

  4. 安装MySQL的步骤和方法

    Mysql的安装方法 安装mysql的步骤如下: 请注意按图中所示,有些选项和默认是不一样的.同时,如果您是重新安装mysql的话,要注意先备份好mysql目录中的data目录,这个目录是所有用户的数 ...

  5. 海量url mysql_海量数据mysql优化步骤

    第一优化你的sql和索引: 第二加缓存,memcached,redis: 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的a ...

  6. Mysql简介和Mysql优化查询的方法

    MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统.MySQL 完全适用于网络,用其建造的数据库可在因特网 ...

  7. MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单(安装mysql的步骤和方法)

    目录 MySQL 压缩包下载地址: 下载方式: 安装步骤: 一.解压下载的文件: 二.给解压的文件改名 三.将这个包放到自己想要存放的电脑目录下 四.配置环境变量 1.右键我的电脑,选择属性 2.选择 ...

  8. mysql优化 博客园_MySQL优化

    MySQL优化步骤 首先学会如何定位到SQL语句 1.1查看SQL语句的执行次数 在MySQL中可以通过命令查看服务器该表状态信息 show status like 'Com_______'; 如果想 ...

  9. 项目中常用的MySQL优化你知道多少?

    项目中常用的MySQL优化 文章目录 项目中常用的MySQL优化 前言 一.mysql优化是什么? 二.优化步骤 1.EXPLAIN 2.SQL语句中IN包含的值不应太多 3.SELECT语句务必指明 ...

最新文章

  1. @ResponseBody注解作用
  2. java ajax是什么东东_AJAX--这东东就是好
  3. iOS 通知观察者的被调函数不一定运行在主线程
  4. keil5图标变成白色_PPT中高大上的图标是怎么做的?
  5. XCODE 所有DeviceSupport
  6. python编程实例视屏-python实现实时视频流播放代码实例
  7. linux内核网络协议栈--packet_type(十二)
  8. Win32汇编数组编程图解
  9. python 中给文件加锁——fcntl模块
  10. 进入环境_如何进入Windows恢复环境(WinRE)
  11. C/S构架和B/S架构的比较
  12. 故宫夜场门票被炒到3000元一张?网站被挤崩 故宫如此回应...
  13. 实习踩坑之路:日期计算错误,Java8API导致Unsupported unit: Seconds,计算当前时间到凌晨00:00的计算方法
  14. hibernate教程笔记2
  15. 计算机快速录入,如何快速把书中的文字扫描并录入电脑
  16. java 打包发布_一个java项目的打包与发布
  17. STM32F446RET6产品描述
  18. 大脑神经网络记忆原理图,记忆力机制的神经网络
  19. 如何设计三极管控制继电器电路
  20. CPU降温软件测试自学,CPU降温软件真的有用吗工作原理是什么

热门文章

  1. php redis 制作高迸发秒杀
  2. 在Mac下修改Office的界面显示语言
  3. php switch 如果不在case后加break会怎么样
  4. KMP算法 -- 字符串模式匹配算法
  5. JS判断浏览器类型,获得浏览器版本号
  6. 中国企业面临严峻的数字化人才短缺挑战,高达86%的受访企业面临招聘困难 | 美通社头条...
  7. 优雅的python,铁打的Java,基础的c
  8. Doom3 - Begin
  9. SAP FIORI移动产品架构优化衍进之路
  10. python改变excel单元格字体和颜色_Python中openpyxl怎样改变字体和颜色