怎么进入mysql日志 mysql日志进入方法

怎么进入mysql日志 mysql日志进入方法,第1张

1、首先找到MySQL的配置文件my.cnf,在[mysqld]下添加

2、general_log_file=~/query.log

3、同时,登录MySQL console中设置打开log

4、mysql -uroot

5、>SET global general_log = 1

6、重启MySQL之后就可以在当前用户的HOME目录中通过query.log查看SQL日志了。

查了一下资料,My SQL可以用下面方法跟踪sql 语句,以下方法以Windows平台为例,linux雷同:

1 配置my.ini文件(在安装目录,linux下文件名为my.cnf

查找到[mysqld]区段,增加日志的配置,如下示例:[mysqld]log=C:/temp/mysql.log

log_slow_queries=C:/temp/mysql_slow.log

long_query_time=1

log指示日志文件存放目录;

log_slow_queries指示记录执行时间长的sql日志目录;

long_query_time指示多长时间算是执行时间长,单位s。

Linux下这些配置项应该已经存在,只是被注释掉了,可以去掉注释。但直接添加配置项也OK啦。

2 重新启动mysql服务。注意事项:A日志存放目录必须提前存在,否则不能记录日志。这里也局势C:/temp目录必须已经存在

B 日志文件是linux格式的文本,建议用ultraEdit打开,转换为dos格式查看(否则没有换行,看不懂的)

C 服务在启动状态下不能删除日志文件,否则就无法记录sql语句了。

D 不能用ultraEdit直接清除文件内容后保存,否则也记录不下来了。需要重启服务,如果ultraEdit保存了.bak,后记录到此文件中。

E 可以用notepad清除文本后保存,可以继续记录日志。

有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件......

此时,如果 kill 掉 update 线程,那回滚 undo log 需要不少时间。如果放置不管,也不知道 update 会持续多久。

那我们能知道 update 的进度么?

实验

我们先创建一个测试数据库:

快速创建一些数据:

连续执行同样的 SQL 数次,就可以快速构造千万级别的数据:

查看一下总的行数

我们来释放一个大的 update:

然后另起一个 session,观察 performance_schema 中的信息:

可以看到,performance_schema 会列出当前 SQL 从引擎获取的行数。

等 SQL 结束后,我们看一下 update 从引擎总共获取了多少行:

可以看到该 update 从引擎总共获取的行数是表大小的两倍,那我们可以估算:update 的进度 = (rows_examined) / (2 * 表行数)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5900813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存