如何对MySQL进行性能分析

29

如何对MySQL数据库进行性能分析?我想查看针对数据库运行的所有SQL语句。

我知道您可以执行以下操作:

  • set profiling=1;
  • 运行慢查询(例如SELECT * FROM messages WHERE fromaddress='xxx';
  • SHOW PROFILES;

但是这似乎仅适用于在命令行上运行的内容,我想查看从网站运行的结果。


1
显然,您可以在网站中运行这些查询。我猜您正在寻求一种不需要修改应用程序代码的方法。 - Álvaro González
2
"'SHOW PROFILES'已被弃用,并将在未来的版本中删除。请改用Performance Schema。" - bishop
5个回答

7

您想要查看查询日志,但在生产服务器上执行此操作可能不明智。


2

这对我在Ubuntu上有效。

找到并打开你的MySQL配置文件,通常在Ubuntu上是/etc/mysql/my.cnf。查找“Logging and Replication”部分。

# * Logging and Replication
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.

log = /var/log/mysql/mysql.log

或者在新版本的MySQL中,注释掉这些代码行

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1
log_error                = /var/log/mysql/error.log

只需取消注释log 变量即可开启日志记录。使用以下命令重新启动MySQL:

sudo /etc/init.d/mysql restart

现在我们已经准备好开始监控查询。打开一个新的终端并运行此命令以滚动日志文件,根据需要调整路径。

tail -f /var/log/mysql/mysql.log

1

0
你可以即时解析查询日志。如果在 Linux 上,你可以使用 tail -f 命令实时查看日志。
另外,你也可以尝试这些人提供的一些免费软件:

http://hackmysql.com/mysqlsla


0

MySqlAdministrator有一些有用的内置功能(包括日志查看),但是对于日志,它必须在与数据库相同的机器上运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接