热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(101)mysql优化之sql性能问题定位

概述我们面对一个问题的时候,首先是发现问题,然后才是解决问题。在这篇文章中,主要解决如何定位问题。解决方法1.通过showstatus了解各种sql执行频率showstatus[l

概述

我们面对一个问题的时候,首先是发现问题,然后才是解决问题。在这篇文章中,主要解决如何定位问题。

解决方法

1.通过show status了解各种sql执行频率

show status [like 'com_%'];

Com_xxx表示每个xxx语句执行的次数。
具体参数,参见:
http://lxneng.iteye.com/blog/451985
http://www.sandzhang.com/blog/2010/04/07/mysql-show-status-explained-detail/

《(101)mysql优化之sql性能问题定位》 show status

2.通过explain分析低效的SQL

explain sql_statement;

《(101)mysql优化之sql性能问题定位》 mysql explain

参数关系

参数解释
select_type表示查询的类型simple-简单表,primary-主查询,union-union中的第二个查询,subquery-子查询
table查询的表–
type访问类型all-全表扫描,index-索引全扫描,range-索引范围扫描,ref-使用非唯一索引或(唯一索引的前缀)扫描,eq_ref-唯一索引扫描,const/system-单表最多有一行匹配,null-不用访问表或索引,就能直接得到结果
possible_keys查询时候可能使用到的索引–
key实际使用的索引–
key_len使用索引字段长度–
rows扫描行的数量–
extra执行情况说明和描述–

3.explain extended 和 show warnings

explain extended sql_statement;
show warnings;

《(101)mysql优化之sql性能问题定位》 这里写图片描述

《(101)mysql优化之sql性能问题定位》 这里写图片描述

explain extended输出结果相比explain多了filtered字段(所有结果行数/查询结果行数*100),show warning的message字段可以看到sql优化器优化的结果。

4.通过 show profile分享sql

#查看是否mysql支持profile
SELECT @@have_profiling;
#查看是否开启profiling
select @@profiling;
#查看profile
show profiles;
#查看某一个具体的query的profile,n-查询id;
show profile for query n;

《(101)mysql优化之sql性能问题定位》 这里写图片描述

《(101)mysql优化之sql性能问题定位》 这里写图片描述

Sending data状态表示mysql线程开始访问数据行并把结果返回给客户端,而不仅仅是返回结果给客户端。

5.通过trace分析器分析

#开启trace,设置格式为json,设置trace能使用的最大内存大小。
set optimizer_trace="enabled=on",end_markers_in_json=on;
set optimizer_trace_max_mem_size=100000;
#检查trace
SELECT * FROM information_schema.OPTIMIZER_TRACE;

《(101)mysql优化之sql性能问题定位》 这里写图片描述

6.慢查询日志


推荐阅读
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
Ken張創彬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有