28

如何分析 MySQL 数据库。我想查看针对数据库运行的所有 SQL。

我知道你可以这样做:

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

但这似乎只适用于在命令行上运行的东西,我想看看运行网站的结果。

4

5 回答 5

6

您想要查询日志- 但显然在重型生产服务器上执行此操作可能......不明智。

于 2009-06-18T14:26:53.400 回答
2

这在 Ubuntu 上对我有用。

查找并打开您的 MySQL 配置文件,通常/etc/mysql/my.cnf在 Ubuntu 上。查找“日志记录和复制”部分</p>

# * 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
于 2013-01-31T22:31:23.173 回答
1

有一个商业产品

http://www.webyog.com/en/

于 2009-06-18T14:18:51.637 回答
0

您可以简单地实时解析查询日志。如果在 linux 上,您可以使用 tail -f 实时查看日志

此外,您可以尝试这些家伙提供的一些免费软件:

http://hackmysql.com/mysqlsla

于 2009-06-18T14:18:50.450 回答
0

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

于 2009-06-18T14:29:51.880 回答