MySQL优化(四) 慢查询的定位及优化

一、SQL语句优化的一般步骤:

(1)通过 show status 命令了解各种 SQL 的执行效率;

(2)定位执行效率较低的 SQL 语句(重点是 Select);

(3)通过 explain 分析低效率的 SQL 语句的执行情况;

(4)确实问题并采取相应的优化措施;

二、

1、show status 命令

 格式: show [session | global] status like ...

如果不写[session | global],默认的是session,即取出当前回话的执行情况;

 如果想查询所有的(即MySql启动到现在的信息), 则增加 global 参数;

show status like "uptime"  //查询MySql启动的时间;
show status like "com_select" //查询MySql的查询次数
show status like "com_insert" //查询MySql的插入次数
show status like "com_update" //查询MySql的更新次数
show status like "com_delete" //查询MySql的删除次数 
show global status like "uptime"  //查询MySql启动的时间;
show global status like "com_select" //查询MySql的查询次数
show global status like "com_insert" //查询MySql的插入次数
show global status like "com_update" //查询MySql的更新次数
show global status like "com_delete" //查询MySql的删除次数 show global status like "connections" //查询MySQL的连接数show global status like "slow_queries" //获取慢查询的次数

2、如何定位慢查询?

默认情况下,MySql认为超过 10 秒才是一个慢查询;

显示当前慢查询设置的时间:show variables like "long_query_time" ;

修改慢查询的设置时间为1秒:set long_query_time=1

原文地址:https://www.cnblogs.com/yufeng218/p/10029862.html

时间: 2024-11-08 23:34:27

MySQL优化(四) 慢查询的定位及优化的相关文章

Unity学习-优化_卡顿原因定位以及优化方案

除了Unity的一些组件优化技巧之外,更多的细节处于代码层面上 最近学习优化,看到一篇文章,写的很详细,从底层原理到我们 的实际处理,都有一些非常好的建议,可以推荐给小伙伴们看看 https://www.jianshu.com/p/289de89a6609 ===========如何定位程序的哪一个环节产生了过大的开销============ 使用Uinty的Profiler工具,可以比较精准快速的定位程序的哪一个位置产生了大开销 首先在build setting里面勾选Autoconnect

MySQL优化:使用慢查询日志定位效率较低的SQL语句

MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL . 慢查询日志在查询结束以后才记录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态.是否锁表等,可以实时地查看SQ

MySQL如何定位并优化慢查询sql

1.如何定位并优化慢查询sql a.根据慢日志定位慢查询sql SHOW VARIABLES LIKE '%query%'      查询慢日志相关信息 slow_query_log 默认是off关闭的,使用时,需要改为on 打开 slow_query_log_file 记录的是慢日志的记录文件 long_query_time 默认是10S,每次执行的sql达到这个时长,就会被记录 SHOW STATUS LIKE '%slow_queries%'  查看慢查询状态 Slow_queries 记

MySQL之查询性能优化四

MySQL的万能"嵌套循环"并不是对每种查询都是最优的.不过还好,mysql查询优化器只对少部分查询不适用,而且我们往往可以通过改写查询让mysql高效的完成工作.在这我们先来看看mysql优化器有哪些局限性: 1.关联子查询 mysql的子查询实现得非常糟糕.最糟糕得一类查询是where条件中包含in()的子查询语句. 例如,我们希望找到sakila数据库中,演员Penlope Guiness参演的所有影片信息. 很自然的,我们会按照下面的方式用子查询实现: select * fro

MySQL优化四(优化表结构)

body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10px; padding-bottom: 10px; background-color: white; padding: 30px } body>*:first-child { margin-top: 0 !important } body>*:last-child { margin-bottom:

mysql第四篇--SQL逻辑查询语句执行顺序

mysql第四篇--SQL逻辑查询语句执行顺序 一.SQL语句定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition&g

mysql第四篇:数据操作之多表查询

mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dname VARCHAR(50) not null COMMENT '部门名称' )ENGINE=INNODB DEFAULT charset utf8; #添加部门数据 INSERT INTO `dept` VALUES ('1', '教学部'); INSERT INT

【MySQL】《高性能MySQL》学习笔记,第四章,Schema与数据类型优化

[MySQL]<高性能MySQL>学习笔记,第四章,Schema与数据类型优化 良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema. 反范式的设计可以加快某些类型的查询,单同时可能使另一类型的查询变慢,比如添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高. 1.选择优化的数据类型 更小的通常更好. ? 应该尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周

查询mysql表是否被损坏和修复、优化

查询mysql表是否被损坏命令,如下: # CHECK TABLE 表名 mysql的长期使用,肯定会出现一些问题,一般情况下mysql表无法访问,就可以修复表了,优化时减少磁盘占用空间.方便备份. 表修复和优化命令,如下: #REPAIR TABLE `table_name` 修复表 #OPTIMIZE TABLE `table_name` 优化表 REPAIR TABLE 用于修复被破坏的表. OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并