Mysql(10)mysql 慢查询及sql优化

SQL优化

优化sql步骤:

慢查询日志

找出执行慢的sql语句

进行具体语句优化或建立索引


有关慢查询的操作

-- 查看有关mysql数据库服务器的一些信息
show [session|global] status;
     session:当前连接
     global:数据库服务器启动之后
show global status;

show status like 'Com_%'  一般查看以com开头的

// 根据执行的sql语句(次数)
Com_select:查询
Com_update:修改次数
Com_insert:插入次数
Com_delete:删除的次数

// 此处是影响的行数(比如查询一次显示20行,那么行数增加20行)
InnoDB_rows_read:执行select操作的次数 
InnoDB_rows_updated:执行update的次数
InnoDB_rows_inserted:执行insert操作的次数
InnoDB_rows_deleted:执行delete操作的次数

connections:连接mysql的数量
Uptime:服务器已经工作的秒数

Slow_queries:慢查询的次数




-- // 查看“慢查询”的配置信息
show variables like "%slow%"; 
 -- // 查看“慢查询”的时间定义
show variables like "long%";  

 -- //设置“慢查询”的时间定义
set long_query_time=0.2;   
-- //开启慢日志
set global slow_query_log='ON';





mysql> show variables like '%slow%';
+---------------------------+--------------------------------------------+
| Variable_name             | Value                                      |
+---------------------------+--------------------------------------------+
| log_slow_admin_statements | OFF                                        |
| log_slow_slave_statements | OFF                                        |
| slow_launch_time          | 2                                          |
| slow_query_log            | OFF                                        |
| slow_query_log_file       | /var/lib/mysql/yc-virtual-machine-slow.log |
+---------------------------+--------------------------------------------+


mysql> show variables like "long%";  
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)



定位执行效率较低的SQL语句

1. explain select * from table where id=1000;
2. desc select * from table where id=1000;
 *************************** 1. row ***************************
        id: 1
select_type: SIMPLE(简单查询,不是多表查询和复杂查询) 可能的值:simple,primary,union,dependent union,union result
     table: php114(表名)
      type: ALL()     可能的值:system,const(最优化,使用了主键或者唯一健),eq_ref,ref.ref_or_null,index_merge
possible_keys: NULL         提示使用哪个索引会在该表中找到行
       key: NULL()     mysql使用的索引,简单且重要
   key_len: NULL()     mysql使用的索引长度
       ref: NULL          显示使用哪个列或者常数与key一起从表中选择行
      rows: 6          mysql执行查询的行数,简单且重要,数值越大越不好,说明没有用好索引
     Extra:          包含mysql解决查询的详细信息
1 row in set (0.00 sec)




SQL语句优化


  • 表结构优化
  • SQL语句优化 复杂查询简单化,简单查询少量化
  • 索引的优化 适当添加索引,并使用索引,但是请注意索引过多导致的MySQL压力过大


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值