MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为慢查询。

1、查看时间限制
show variables like '%long%';
如果查询超过long_query_time的时间就称为慢查询

2、查看数据库的启动时间
show status like 'uptime%';

3、查看查询语句条数
show status like 'com_Select';

4、获取连接数
show status like 'connections';

5、设置慢查询的时间
set long_query_time = 1;

6、以安全模式启动mysql服务,慢查询记录将会写入日志之中。
开启慢查询日志
在MySQL的配置文件中加以下参数
log-show-queries = D:/MySQL/Log/mysqld-slow-query.log
long-query-time = 5
log-queries-not-using-indexes

阐述:
有关慢查询日志功能存放位置,该目录文件一定要有写的权限。

可以用设置,系统会给一个缺省的文件host_name-show.log
long_query_time
SQL执行时间阀值,默认为10秒
注意一下三点:
1、设置long_query_time这个阀值后,mysql数据库会记录运行时间超过该值的所有SQL语句,但对于运行时间正好等于long_query_time的情况并不会被记录下来。也就是说,在mysql源码里是判断大于log_query_time,而非大于等于。
2、从MySQL5.1开始,long_query_time开始以微秒计算,这样精确记录SQL的运行时间。
3、建议该时间不应太小或太大,最好在5-10秒之间。当然可以根据自己的情况来定。
log-queries-not-using-indexes
如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件之中。


查询优化神器 – explain命令

关于explain命令相信大家并不陌生,具体用法和字段含义可以参考官网explain-output,这里需要强调rows是核心指标,绝大部分rows小的语句执行一定很快(有例外,下面会讲到)。所以优化语句基本上都是在优化rows。

慢查询优化基本步骤

0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE
1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高   查哪个字段时间比较长????
2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)
3.order by limit 形式的sql语句让排序的表优先查
4.了解业务方使用场景
5.加索引时参照建索引的几大原则
6.观察结果,不符合预期继续从0分析


建索引的几大原则

1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式

3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录

4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);

5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可

11MYSQL:慢查询以及优化步骤相关推荐

  1. MYSQL的深入学习--优化步骤

    MySql优化的一般步骤 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以"Com" ...

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

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

  3. MySql的优化步骤

    MySql优化的一般步骤: 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以"Com" ...

  4. MySQL的查询性能优化——《深究MySQL》

    更新中....... #写在前面 mysql查询缓慢的原因有哪些? 1.查询语句是否请求了不必要的多余数据 2. 总结以上原因之后,优化数据库性能,就需从以下几个方面着手: 1. 说明:下面的知识为零 ...

  5. mysql笔记03 查询性能优化

    查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...

  6. 数据库-优化-Limit查询的优化

    Limit查询的优化 Limit常用于分页处理,时长会伴随order by从句使用,因此大多时候回使用Filesorts这样会造成大量的IO问题. 例子: 需求:查询影片id和描述信息,并根据主题进行 ...

  7. 高性能MySQL(4)——查询性能优化

    査询优化.索引优化.库表结构优化需要齐头并进,一个不落. 一.为什么查询速度为变慢 在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间.如果把查询看作是一个任务,那么他由一系列子任务组成,每个 ...

  8. MySQL高级 —— 查询性能优化

    引言 承接<MySQL高级 -- 高性能索引>,本篇博客将围绕<高性能MySQL(第三版)>第六章内容进行总结和概括. 与索引的部分一样,SQL优化也是广大程序员深入MySQL ...

  9. 复杂sql优化步骤与技巧

    数据管理型系统,由于用户的要求或者系统设计要求,会出现大量表进行join,还要进行大量统计性数据查询展示,甚至数据权限控制等操作.最后会导致sql异常复杂,随着数据量增加,或者只是应用到生产环境(正式 ...

最新文章

  1. 开发标准化软件组件能让程序员在大城市过上体面的生活 -- 多系统用户权限管理标准件开发销售心得体会...
  2. 【 MATLAB 】使用 filter 函数产生给定线性时不变系统的单位阶跃响应
  3. HTTP/2笔记之连接建立
  4. TikTok太火,Netflix急了
  5. 一个filter引起的404错误
  6. C语言程序设计二期末考试,9第二学期期末考试《C语言程序设计》A
  7. 如何在JavaScript中使用when()有条件地更改值
  8. Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序
  9. 最吓人的鬼故事排行榜前十名(转载)
  10. storm-starter 例子学习
  11. Android 实现 相机、相册功能 + 图片存取数据库操作
  12. CocoStudio1.3 场景编辑器使用
  13. 论分布式存储系统架构设计
  14. 记录一个好用ER图软件dbschema
  15. html自动浮动div广告,div+css下js浮动对联广告不随屏幕滚动的解决方法
  16. java keytool证书cer,keytool 生成cer证书
  17. 骑士cms(74cms)个人版 整合UC
  18. gyb优化事项(4)
  19. 小暑 |入伏前,这样做,宝宝长高高更聪明!
  20. Oracle EBS Interface/API(13)-MRP Forcast 创建预测名称和预测物料导入

热门文章

  1. GridView 用 checkbox 全选并取值
  2. JFace中的表格型树TableTreeViewer
  3. 图解使用Win8Api进行Metro风格的程序开发二----使用文件选择器访问和保存文件
  4. VDI序曲九 实战体验Remote FX(重磅推荐)
  5. Fedora13安装Gnome-shell
  6. Json.net|NH|Log4net|Test等工具下载地址
  7. krylov子空间迭代法
  8. tcpdump过滤某个端口
  9. 创智播客 大数据_华中人工智能主题产业园——武汉融创智谷
  10. Linux Graphic DRI 显示子系统 介绍1