1、方法一:使用mysql程序自带的mysqldumpslow命令分析
1)查询slow log的状态
在线开启慢查询日志
查看long_query_time时间
修改long_query_time为1秒
2)使用sql中的sleep函数进行一次慢查询
3)退出mysql,查看日志
4)使用tpcds中的query语句进行查询
因为mysql5.7不支持with as用法,在尝试了几个语句之后,发现这条语句查询时间比较长
select a.ca_state state, count(*) cnt
from customer_address a
,customer c
,store_sales s
,date_dim d
,item i
where a.ca_address_sk = c.c_current_addr_sk
and c.c_customer_sk = s.ss_customer_sk
and s.ss_sold_date_sk = d.d_date_sk
and s.ss_item_sk = i.i_item_sk
and d.d_month_seq =
(select distinct (d_month_seq)
from date_dim
where d_year = 2002
and d_moy = 3 )
and i.i_current_price > 1.2 *
(select avg(j.i_current_price)
from item j
where j.i_category = i.i_category)
group by a.ca_state
having count(*) >= 10
order by cnt, a.ca_state
;
查看log中的日志,已经有这条查询了
5)安装分析工具mysqlsla
yum install perl-DBI perl-DBD-MySQL perl-devel -y
6)重启一下终端,查看mysqlsla是否安装完成
出现了一点小问题,mysqlsla无法在root用户下使用,所以把slow.log文件复制了一份到user用户下,修改了所有者之后,用mysqlsla分析了一下
2、方法二:使用pt(Percona Toolkit)工具的pt-query-digest进行统计分析。
下载pt
运行一下pt-mysql-summary试试
使用pt-query-digest
参考资料:
https://www.cnblogs.com/skymyyang/p/7239010.html
https://blog.csdn.net/Mr_lisj/article/details/93867681