数据库SQL优化通常涉及以下方面:
1.查询优化:确保使用正确的索引来优化查询。
2.避免全表扫描:避免不必要的全表扫描,使用索引就是为了避免全表扫描。
3.使用EXPLAIN分析查询:检查SQL查询的执行计划,判断sql语句存在的问题。
4.使用JOIN代替子查询:适当情况下,使用JOIN来合并表。
5.使用视图减少重复查询:创建视图来简化复杂查询。
6.使用索引:为常查询的列添加索引。
7.避免SELECT *:只选取需要的列,防止回表。
8.使用LIMIT限制结果集:对大型查询使用LIMIT来减少返回数据量。
9.使用INSERT批量操作:减少单个INSERT语句的数量。
10.定期分析和优化表:使用ANALYZE TABLE和OPTIMIZE TABLE。
第一步,搜集慢查询日志
my.ini配置文件中配置查询日志
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
解释:
slow_query_log: 1 代表开启慢查询日志。
slow_query_log_file: 慢查询日志文件的路径。
long_query_time: 定义查询了多久才算是慢查询,这里设置的是2秒。
配置完成后,需要重启MySQL服务使配置生效。
sudo service mysql restart
sudo systemctl restart mysqld
慢查询日志分析工具
一、Mysqldumpslow
mysqldumpslow -s r -t 10 slow-mysql.log
-s order (c,t,l,r,at,al,ar)
c:总次数
t:总时间
l:锁的时间
r:总数据行
at,al,ar :t,l,r 平均数 【例如:at = 总时间/总次数】
-t top 指定取前面几天作为结果输出
mysqldumpslow -s t -t 10
/usr/local/mysql/data/mysql-slow.log
二、pt_query_digest
安装工具以支持脚本分析
Yum -y install 'perl(Data::Dumper)';
yum -y install perl-Digest-MD5
yum -y install perl-DBI
yum -y install perl-DBD-MySQL
perl ./pt-query-digest --explain h=127.0.0.1,u=root,p=root1234%
/usr/local/mysql/data/mysql-slow.log