1.mysql优化的目的
事务阻塞,慢查询
2.mysql优化的方向
sql及索引优化。
数据库表结构,根据数据设计查询最优的表结构。
系统配置优化,对打开文件数和安全的限制。
硬件,选择最适合数据库的cpu,更快的IO,更大的内存,cpu不是越多越好, IO并不能减少锁的机制,也就是不能减少阻塞,所以说硬件的优化成本越高,效果最差。
3.mysql慢查询日志的开启
slow_query_log
show_query_log_file:慢查日志存储位置
set global slow_query_log_file="D:/Program Files/mysql-5.6.44-winx64/loglocalhost-slow.log";
log_queries_not_use_indexes:是否把没有使用索引的查询记录在文件中
long_query_time:超过多少秒的查询记录下来
#开启慢查询日志记录
mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec)
#查询时间超过0.1秒的sql语句会被记录
mysql> set global long_query_time=0.1;
Query OK, 0 rows affected (0.03 sec)
#记录慢查询日志的文件地址
mysql> set global slow_query_log_file="/var/lib/mysql/localhost-slow.log";
Query OK, 0 rows affected (0.04 sec)
#记录没有使用索引的查询
mysql> set global log_queries_not_using_indexes=on;
Query OK, 0 rows affected (0.00 sec)
show variables like 'slow_query_log';
show variables like 'long_query_time';
show variables like 'slow_query_log_file';
show variables like 'log_queries_not_using_indexes';
4.mysql慢查询日志存储格式
1.mysqldumpslow(mysql官方自带的,安装的时候就带有)
2.mysqldumpslow -t 3 /home/mysql/data/mysql-slow.log | more(输出排名前三的查询慢的日志)
3.-s (可以规定慢查询日志以什么方式排序展示)
# Time: 190617 11:07:00
# User@Host: root[root] @ localhost [::1] Id: 25
# Query_time: 0.001000 Lock_time: 0.001000 Rows_sent: 7 Rows_examined: 17
SET timestamp=1560740820;
SELECT a.name,a.subject,b.children from teachers a left join father b on a.name=b.name
union
select b.name,a.subject,b.children from teachers a right join father b on a.name=b.name;
4.mysql自带命令mysqldumpslow分析慢查询
mysqldumpslow是perl命令,需要搭建对应的环境后才能运行
perl环境搭建:https://www.runoob.com/perl/perl-environment.html
mysqldumpslow -t 3 D:\Program Files\mysql-5.6.44-winx64\loglocalhost-slow.log | more
详细使用:https://www.cnblogs.com/bean-sprout/p/7590766.html
5.pt-query-digest使用
详细使用:http://www.php.cn/mysql-tutorials-357655.html
下载地址:wget http://www.percona.com/downloads/percona-toolkit/2.2.4/percona-toolkit-2.2.4.tar.gz
关注点
6.explain分析单一sql的执行效率
各列参数含义:https://www.jianshu.com/p/8fab76bbf448
const:一般是主键,唯一索引之类的常数查找;eq_reg范围查找
https://blog.csdn.net/johnstrive/article/details/46437547
演示
下载演示数据库网址:https://dev.mysql.com/doc/index-other.html
查看数据库表结构网址:https://dev.mysql.com/doc/sakila/en/sakila-installation.html