如何分析 MySQL 数据库。我想查看针对数据库运行的所有 SQL。
我知道你可以这样做:
set profiling=1;
- 运行你的慢查询(例如
SELECT * FROM messages WHERE fromaddress='xxx';
SHOW PROFILES;
但这似乎只适用于在命令行上运行的东西,我想看看运行网站的结果。
如何分析 MySQL 数据库。我想查看针对数据库运行的所有 SQL。
我知道你可以这样做:
set profiling=1;
SELECT * FROM messages WHERE fromaddress='xxx';
SHOW PROFILES;
但这似乎只适用于在命令行上运行的东西,我想看看运行网站的结果。
您想要查询日志- 但显然在重型生产服务器上执行此操作可能......不明智。
这在 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
有一个商业产品
您可以简单地实时解析查询日志。如果在 linux 上,您可以使用 tail -f 实时查看日志
此外,您可以尝试这些家伙提供的一些免费软件:
MySqlAdministrator 有一些有用的内置功能(包括日志视图),但对于日志,它必须与数据库在同一台机器上运行