MySQL性能分析工具(pperf+Flame Graphs)

本文将介绍如何使用perf和Flame Graphs工具对MySQL进行性能分析,这两个工具能够以图形化的形式展现MySQL中的哪些函数被调用以及调用次数,对于MySQL性能分析和优化有较大的作用。

perf 用来采集性能数据,Flame Graphs 使用perf采集的数据进行图形化展示

安装perf

1
yum install -y perf

使用Linux perf工具进行系统级性能数据采集

1
2
3
4
# 针对特定进程进行性能分析
perf record -F 99 -p <PID> -g -- sleep 60
#任务时钟
perf record -a -g -e task-clock -p 3601 -- sleep 60

数据采集完成后,通常会生成一个二进制数据文件perf.data,通过下面的命令将采集的二进制数据进行加工,转换成易于阅读的文本文件,

1
perf script > perf.script

安装FlameGraph

1
git clone https://github.com/brendangregg/FlameGraph

将perf.script文件作为输入,通过Flame Graphs工具,生成svg格式的性能图形

1
../FlameGraph/stackcollapse-perf.pl perf.script | ../FlameGraph/flamegraph.pl > flamegraph.svg

现在,可以在网络浏览器中打开 flamegraph.svg

使用perf+Flame Graphs方式,能够从更深层的函数调用上,以图形化的方式看到MySQL是如何执行的,以及具体某个函数执行了多少次,能够更好地看到隐藏在进程之后的具体操作,相对于文本,图形化的展示,更容易被人阅读,也更容易发现性能瓶颈以及相应的优化方向。