如何查看实时MySQL查询?

我如何跟踪Linux服务器上发生的MySQL查询?

例如,我希望设置某种侦听器,然后请求一个网页并查看引擎执行的所有查询,或者仅查看在生产服务器上运行的所有查询。我怎样才能做到这一点?


梵蒂冈之花
浏览 485回答 3
3回答

倚天杖

您可以非常轻松地将每个查询记录到日志文件中:mysql> SHOW VARIABLES LIKE "general_log%";+------------------+----------------------------+| Variable_name    | Value                      |+------------------+----------------------------+| general_log      | OFF                        || general_log_file | /var/run/mysqld/mysqld.log |+------------------+----------------------------+mysql> SET GLOBAL general_log = 'ON';进行查询(在任何数据库上)。Grep或其他检查/var/run/mysqld/mysqld.log那别忘了mysql> SET GLOBAL general_log = 'OFF';否则性能将直线下降,您的磁盘将满!

GCT1015

即使答案已经被接受,我还是想介绍一下可能是最简单的选择:$ mysqladmin -u bob -p -i 1 processlist这将每秒在屏幕上显示当前查询。-u 您要执行命令的mysql用户-p 提示您输入密码(因此您不必将其保存在文件中或将命令显示在命令历史记录中)i 时间间隔(以秒为单位)。使用该--verbose标志显示完整的进程列表,并显示每个进程的整个查询。(谢谢,nmat)可能有一个缺点:如果快速查询在您设置的时间间隔之间运行,则可能不会显示。IE:我的间隔设置为一秒,如果有一个查询需要花费.02几秒钟来运行并且在间隔之间运行,您将看不到它。当您想快速检查正在运行的查询而不必设置侦听器或其他任何内容时,最好使用此选项。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL