如何对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配置文件,通常在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
MySqlAdministrator有一些有用的内置功能(包括日志查看),但是对于日志,它必须在与数据库相同的机器上运行。