1.优化的方法
成本由低到高的选择:SQL及索引、数据库表结构、系统配置、硬件。
2.SQL语句优化
2.1.如何发现有问题的SQL(测试Mysql版本5.7)
2.1.0.下载安装sakila
下载地址:
得到数据库脚本如下:
安装环境,使用本机VM虚拟机如下:
不确认这个虚拟机自己有没有装过Mysql版本,想办法确认:
yum list installed mysql*
rpm -qa | grep mysql*
whereis mysql
yum和rpm指令没有发现有mysql,但是whereis命令有发现
/usr/lib64/mysql
/usr/share/mysql
继续分析
rpm -qa | grep mariadb
强制删除rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps,再检查没有了
开始安装Mysql:
2.1.1.使用MySQL慢查日志
show variables like 'slow_query_log';
设置日志存储目录,无效
set global slow_query_log_file = 'D:\sql_log\mysql-slow.log'
需要设置成
set global slow_query_log_file = 'D:/sql_log/mysql-slow.log'
记录没有使用索引的SQL
set global log_queries_not_using_indexes=on;
打开慢查询
set global slow_query_log=on;
设置慢查询标准时间(会出现不生效),也可以设置0.01秒看效果
set global long_query_time=1;
这里不要担心,实际效果是已经生效了,只要把数据库停用再打开,就可以看到效果了。
show variables like 'slow_query_log';
show variables like '%log%';
show variables like 'long_query_time';
测试效果:
show TABLES;
SELECT * FROM store limit 10;
日志里:(#Time,#User, #Query time)
2.1.2.慢查日志分析工具:mysqldumpslow
生产上开了慢查日志后,日志量会很大,需要有分析工具。