mysql优化

来源:互联网 发布:顶易软件多少钱 编辑:程序博客网 时间:2024/06/01 20:27

mysql优化
查询sql版本

mysql> select @@version;

是否开启慢查询

mysql> show variables like 'slow_query_log';+----------------+-------+| Variable_name  | Value |+----------------+-------+| slow_query_log | OFF   |+----------------+-------+1 row in set (0.00 sec)

查询完整的日志信息

mysql> show variables like '%log%';

记录未使用索引的sql

mysql> set global  log_queries_not_using_indexes = on;

显示慢查询的时间

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

设置超过多少秒记录慢查询日志

mysql> set global long_query_time=1;

开启慢查询日志

mysql> set global slow_query_log=on;

MySQL, Version: 5.6.13 (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: MySQL
Time Id Command Argument
执行的时间
# Time: 161128 21:11:25
执行的主机名
**#**User@Host: root[root] @ localhost [::1] Id: 13
执行的信息
# Query_time: 0.001000 Lock_time: 0.000000 Rows_sent: 2 Rows_examined: 2
use sakila;
时间戳
SET timestamp=1480338685;
执行sql的内容
select * from store;

mysqldumpslow + 日志地址

[root@bogon software]# wget percona.com/get/pt-query-digest
[root@bogon software]#cp pt-query-digest /sbin
[root@bogon sbin]#chmod 777 pt-query-digest
[root@bogon sbin]yum install perl*
pt-query-digest

explain +查询语句
table:显示查询的表名
type:重要列,显示连接了何种类型const(主键查找) 、eq_reg(范围查找)、ref(连接查询)、range(索引的范围查找)、index(索引扫描)、all(表扫描)
possible_keys:可能应用在表中的索引,如果为null表示没有索引
key:实际应用的索引,如果为null表示没有使用索引
key_len:索引长度,越短越好
ref:显示索引的那一列被使用
rows:请求数据的行数
extra:列需要注意的返回值
Using filesort:查询需要优化,需要额外的步骤来实现如何对返回的行排序
Using temporary:查询需要优化,创建了一个临时表来存储结果,对不同的列进行ORDER BY 而非GROUP BY

索引优化规则
max()通过添加索引优化
count() *包含null而列不包含null
子查询优化为join如果存在一对多需要去重
列的离散值更大,联合索引时就应该放在最前面

0 0
原创粉丝点击