mysql: 如何找到某个时间段(譬如最近)执行最多的sql语句

想要找到某个时间段(譬如最近)执行最多的sql语句(参数可以不同),或者某个时间段被用到最多次数的表,怎么做到?

阅读 3.5k
2 个回答

不知道有没有捷径,能想到的是自己记录general_log,通过设置general_log变量开启日志的记录:

set global general_log="on";

然后查询general_log的地址:

select @@general_log_file;

我这里得到的结果是:/usr/local/var/mysql/Jackies-MBP.log,就可以自己分析日志文件了。
对了,这个general_log_file变量你也可以自己设置为自己想存储的地址。
希望能帮助到你。

我所知道的只有两个方法,不知道适不适合你的情况。
第一种方法,比如PHP的开发框,ThinkPHP的Runtime目录中有sql.log文件,那是按天生成的,你可以用bash命令归类查询。了解到某时间段SQL的执行情况。如果你用其他开发框架可以看看其他框架有没有类似的。
第二种方式在你binglog中也是有sql执行的
第三种不推荐你用,太麻烦,但是更直观和具体。你在数据库里可以建一个表来统计sql操作指令和操作的数据表。这需要你在sql执行的过程中进行关联插入。在后台可以直观的去统计。比如开发框架采用ThinkPHP的,可以通过修改Db类库实现。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题