您的位置:首页 > 数据库 > MySQL

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

2018-01-30 20:49 344 查看
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压力过大
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 慢查询