MySQL如何开启记录从客户端收到的每条SQL查询语句和提交时间的功能? 我可以在phpmyadmin或NaviCat中这样做吗? 如何分析日志?
当前回答
看看另一个相关问题的答案。它展示了如何在不重新启动的情况下启用、禁用和查看活动服务器上的日志。
在mysql中记录所有查询
以下是摘要:
如果你不想或者不能重新启动MySQL服务器,你可以在你正在运行的服务器上这样做:
创建日志表(见答案) 启用数据库的查询日志 (注意,字符串'table'应该按字面意思放置,而不是用任何表名代替。感谢尼古拉斯·皮克林)
SET global general_log = 1;
SET global log_output = 'table';
查看日志
select * from mysql.general_log;
禁用数据库查询日志
SET global general_log = 0;
不禁用地清除查询日志
TRUNCATE mysql.general_log
其他回答
看看另一个相关问题的答案。它展示了如何在不重新启动的情况下启用、禁用和查看活动服务器上的日志。
在mysql中记录所有查询
以下是摘要:
如果你不想或者不能重新启动MySQL服务器,你可以在你正在运行的服务器上这样做:
创建日志表(见答案) 启用数据库的查询日志 (注意,字符串'table'应该按字面意思放置,而不是用任何表名代替。感谢尼古拉斯·皮克林)
SET global general_log = 1;
SET global log_output = 'table';
查看日志
select * from mysql.general_log;
禁用数据库查询日志
SET global general_log = 0;
不禁用地清除查询日志
TRUNCATE mysql.general_log
在Windows上,你可以简单地转到
C:\wamp\bin\mysql\mysql5.1.53\my.ini
在my.ini中插入这一行
general_log_file = c:/wamp/logs/mysql_query_log.log
my.ini文件最终看起来像这样
...
...
...
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir=c:/wamp/bin/mysql/mysql5.1.53
log = c:/wamp/logs/mysql_query_log.log #dump query logs in this file
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.1.53/data
...
...
...
...
这不是问题的确切答案,因为这个问题已经有了很好的答案。这是附带信息。启用general_log确实降低了MySQL的性能。我意外地将general_log =1留在了一台生产服务器上,并花了几个小时来找出为什么性能不能与其他服务器上的类似设置相比。然后我发现这解释了启用常规日志的影响。http://www.fromdual.com/general_query_log_vs_mysql_performance。
要点在于,不要将general_log=1放在.cnf文件中。相反,在短时间内使用set global general_log =1来记录足够多的日志,以便找到您想要查找的内容,然后将其关闭。
MySQL 5.6版本有bug。 甚至mysqld显示为:
Default options are read from the following files in the given order:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf
实际设置按以下顺序读取:
Default options are read from the following files in the given order:
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf
检查文件:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
希望它能帮助到一些人。
在phpMyAdmin 4.0,你去状态>监视器。在那里,您可以启用慢查询日志和常规日志,查看实时监视器,选择图表的一部分,查看相关查询并分析它们。
推荐文章
- 在MySQL中检测值是否为number
- MySQL中两个日期之间的差异
- 为什么在MySQL中文本列不能有一个默认值?
- 使用SQL查询查找最近的纬度/经度
- 有nginx access_log和error_log日志的STDOUT和STDERR的主进程
- 如何停止mysqld
- 检查MySQL表是否存在而不使用“select from”语法?
- 从NOW() -1天选择记录
- 从表中选择1是什么意思?
- 在Python Django中运行单元测试时,如何禁用日志记录?
- 数据库性能调优有哪些资源?
- 如何更改表的默认排序规则?
- MySQL foreign_key_checks是否影响整个数据库?
- 哪里是logging.config.dictConfig的完整示例?
- 设置NOW()为datetime数据类型的默认值?