mysql 语句性能分析_mysql的sql语句的性能诊断分析
1> explain SQL,类似于Oracle中explain语句
例如:explain select * from nad_aditem;
2> select benchmark(count,sql);计算sql语句执行count次所花费的时间
例如:
mysql> select benchmark(1000,"SELECT * FROM AD");
+----------------------------------------+
| benchmark(1000,"SELECT * FROM AD") |
+----------------------------------------+
| 0 |
+----------------------------------------+
1 row in set (0.02 sec)
注意观察0.02这个时间,而且不能仅仅关注这个时间,还要观察CPU和系统的负载。
3.MySQL慢查询统计
3.1 按天统计:
grep Time: mysqlmaster-slow.log | awk '{print $3}'|awk '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:
3.2 按分钟统计:
grep Time: mysqlmaster-slow.log | awk '{print $3,$4}'|awk -F : '{print $1,$2}' | awk -F : '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:
3.3 按小时统计:
grep Time: mysqlmaster-slow.log | awk '{print $3,$4}'|awk -F : '{print $1}' | awk -F : '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
Explain语法:explain select…from…[where ...]
例如:explain select * from news;
输出:
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
下面对各个属性进行了解:
1、id:这是SELECT的查询序列号
2、select_type:select_type就是select的类型,可以有以下几种:
SIMPLE:简单SELECT(不使用UNION或子查询等)
PRIMARY:最外面的SELECT
UNION:UNION中的第二个或后面的SELECT语句
DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询
UNION RESULT:UNION的结果。
SUBQUERY:子查询中的第一个SELECT
DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询
DERIVED:导出表的SELECT(FROM子句的子查询)
3、table:显示这一行的数据是关于哪张表的
4、type:这列最重要,显示了连接使用了哪种类别,有无使用索引,是使用Explain命令分析性能瓶颈的关键项之一。
结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。
5、possible_keys:列指出MySQL能使用哪个索引在该表中找到行
6、key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL
7、key_len:显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好
8、ref:显示使用哪个列或常数与key一起从表中选择行。
9、rows:显示MySQL认为它执行查询时必须检查的行数。
10、Extra:包含MySQL解决查询的详细信息,也是关键参考项之一。
Distinct
一旦MYSQL找到了与行相联合匹配的行,就不再搜索了
Not exists
MYSQL 优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,
就不再搜索了
Range checked for each
Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一 个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一
Using filesort
看 到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来 排序全部行
Using index
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表 的全部的请求列都是同一个索引的部分的时候
Using temporary
看到这个的时候,查询需要优化了。这 里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上
Using where
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index, 这就会发生,或者是查询有问题
mysql 语句性能分析_mysql的sql语句的性能诊断分析相关推荐
- mysql多表查询sql语句怎么写_MySQL基本SQL语句之单表查询、多表查询和子查询
一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...
- mysql 隐式提交事务_MySQL的SQL语句 -事务性语句和锁定语句(2)- 致使隐式提交的语句...
致使隐式提交的语句html 本节中列出的语句(以及它们的任何同义词)隐式结束当前会话中活动的任何事务,就像在执行语句以前执行了 COMMIT 同样.mysql 大多数这些语句在执行后也会致使隐式提交. ...
- mysql求女生人数_Mysql版sql语句练习50题(小结)
写完后一年没有看过,没想到这篇文章有这么多人点击.博主工作到一半去考研了,目前已上岸某中部985,也算是比较幸运.非常感谢大家在评论里的留言,留言太多不能一一回复,希望大家见谅.这两天根据评论把文章中 ...
- mysql的values使用_MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句
VALUES 语句 VALUES 是 MySQL 8.0.19 中引入的一个 DML 语句,它以表的形式返回一个或多个行的集合.换句话说,它是一个表值构造器,也可以作为独立的 SQL 语句来运行. 1 ...
- mysql特殊字符小于 大于_MySQL 中SQL语句特殊字符如何处理(大于号, 小于号等)
前言: 我们在使用mybatis时SQL是写在xml映射文件中,如果写的sql中有一些特殊字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,因为转义之后可能会出现一些问题比如SQL语句无 ...
- mysql中常用动词_mysql常用sql语句总结
sql语言简洁只有7个动词:SELECT , DROP, ALTER, CREATE,INSERT, UPDATE,DELETE: 获取表结构:Desc 表名:(show databases;tabl ...
- mysql 语句账号注入_mysql中SQL语句的注入问题
SET NAMES utf8mb4; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` INT(11) UNSIGNED NOT NULL ...
- mysql执行sql语句按钮_mysql执行sql语句过程
开发人员基本都知道,我们的数据存在数据库中(目前最多的是mysql和oracle,由于作者更擅长mysql,所以这里默认数据库为mysql),服务器通过sql语句将查询数据的请求传入到mysql数据库 ...
- mysql事务控制(xa分布式事务)和锁定语句_MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务...
XA 事务 InnoDB 存储引擎支持 XA 事务.MySQL XA 的实现基于 X/Open CAE 文档 Distributed Transaction Processing: The XA Sp ...
最新文章
- TDSQL“相似查询工具MSQL+”入选VLDB论文
- 2020年人工神经网络第二次作业-参考答案第二题
- 卸载一直在创建还原点_Win10电脑开机一直转圈无法进入系统的解决方法
- ViewPager 详解(五)-----使用Fragment实现ViewPager滑动
- 同步通信和异步通信的区别
- http2.0 的时代来了
- IOCP扩展方法AcceptEx, DisconnectEx, GetAcceptExSockaddr用法示例
- 如何添加评论_如何运用运镜+转场让视频更酷炫
- python 今日头条 控制手机_你知道Python脚本控制安卓手机可以用来做什么吗?
- 通过 Powershell 来替换 ARM 模式下虚拟机的网络接口
- 2021年中国道路交通事故情况分析(附机动车保有量、交通事故发生数量、死亡人数、受伤人数、直接经济损失)[图]
- 原创C#Winform桌面应用中实用又美观的开关控件源码分享
- python爬取千图网_python爬取lol官网英雄图片代码
- java 通用权限管理_通用权限管理设计篇(一)
- APP在后台被系统回收后,如何重新启动
- Web Workers API
- 【转发】RS485总线拓扑结构
- 服务器硬件与 Linux 初体验
- Kubernetes安装与卸载
- python之个性二维码制作
热门文章
- not in SQL语句转化为 not exists
- 企业信息管理- 近期功能改善(3)
- pandas的基本使用
- 用Twebbrowser做可控编辑器与MSHTML
- JQuery判断数组中是否包含某个元素$.inArray(js, arr);
- sql server 2008学习8 sql server存储和索引结构
- 浅谈Java中equals()和==的区别
- SpringBoot-@RequestParam
- Redis淘汰删除策略
- Kafka 入门 and kafka+logstash 实战应用