美文网首页
mysql慢查询

mysql慢查询

作者: 杜艳_66c4 | 来源:发表于2020-05-31 11:30 被阅读0次

1、定义

将超过指定时间的SQL语句查询称为“慢查询

2、记录慢查询的方法:

查看/设置“慢查询”的时间定义
show variables like "long%"
也可以自己定义慢查询的时间
set long_query_time = 10.00000

3、开启“慢查询”记录功能

show VARIABLES like "slow%"


image.png

将show_query_log j改为开启状态
set global slow_query_log=ON;

常见Mysql的慢查询优化方式

1、数据库中设置SQL慢查询,如上,开启log,设置慢查询时间
2、分析慢查询日志
直接分析mysql慢查询日志 ,利用explain关键字可以模拟优化器执行SQL查询语句,来分析sql慢查询语句
例如:执行EXPLAIN SELECT * FROM res_user ORDER BYmodifiedtime LIMIT 0,1000
得到如下结果: 显示结果分析:
table | type | possible_keys | key |key_len | ref | rows | Extra EXPLAIN列的解释:
type 这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
rows 显示需要扫描行数
key 使用的索引
3、常见的慢查询优化

1)索引没起作用的情况

  1. 使用LIKE关键字的查询语句
    在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为“%”,索引不会起作用。只有“%”不在第一个位置索引才会起作用。
    1. 使用多列索引的查询语句
      MySQL可以为多个字段创建索引。一个索引最多可以包括16个字段。对于多列索引,只有查询条件使用了这些字段中的第一个字段时,索引才会被使用。

2)优化数据库结构,高效且合理

合理的数据库结构不仅可以使数据库占用更小的磁盘空间,而且能够使查询速度更快。数据库结构的设计,需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容。

  1. 将字段很多的表分解成多个表
    对于字段比较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。
  2. 增加中间表
    对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。
  3. 分解关联查询
    将一个大的查询分解为多个小查询是很有必要的。
  4. 分析具体的SQL语句
    以小表驱动大表

mysql 如何给SQL添加索引

1.添加PRIMARY KEY(主键索引)

alter table table_name add primary key(column);

2.添加UNIQUE(唯一索引)

alter table table_name add unique(column);

3.添加普通索引

alter table table_name add index index_name(column);

4.添加全文索引

alter table table_name add fulltext(column);

5.添加多列索引

alter table table_name add index index_name(column1,column2,column3);

性能测试之nmon对linux服务器的监控

相关文章

网友评论

      本文标题:mysql慢查询

      本文链接:https://www.haomeiwen.com/subject/mrftzhtx.html