我如何知道在我的数据库中触发了多少查询?

时间:2012-12-06 10:34:17

标签: java mysql sql

我有一个employee management申请。我正在使用MySQL数据库。

在我的应用程序中,我有add /edit/delete /view等功能。

每当我运行任何功能时,都会在数据库中触发一个查询。与添加员工一样,它会触发insert查询。

所以我想在我的数据库上做一些事情,这样我就可以看到到目前为止已经发出了多少查询。

我不想对我的Java代码进行任何更改。

5 个答案:

答案 0 :(得分:2)

您可以使用SHOW STATUS

SHOW GLOBAL STATUS LIKE 'Questions'

正如Server Status Variables所述:

  

状态变量具有以下含义。

     

[ deletia ]

     
      
  • Questions

         

    服务器执行的语句数。这仅包括客户端发送到服务器的语句,而不包括Queries变量中存储的程序中执行的语句。此变量不会计入COM_PINGCOM_STATISTICSCOM_STMT_PREPARECOM_STMT_CLOSECOM_STMT_RESET命令。

  •   

请注意:

答案 1 :(得分:1)

您应该执行如下所述的查询:

  1. 要获取SELECT查询计数,请执行Show global status like 'com_select';

  2. 要获取UPDATE查询计数,请执行Show global status like 'com_update';

  3. 要获取DELETE查询计数,请执行Show global status like 'com_delete';

  4. 要获取INSERT查询计数,请执行Show global status like 'com_insert';

  5. 您还可以分析常规日志或通过MySQL代理路由您的应用程序,以获取在服务器上执行的所有查询。

答案 2 :(得分:0)

如果您不想修改代码,则可以使用触发器在数据库上跟踪此代码。限制是触发器只能在插入/更新/删除时触发,因此不能用于计数读取(选择)。

答案 3 :(得分:0)

也许这对你的问题来说太过“企业”和“生产”。

当你使用munin(http://munin-monitoring.org/)(其他监控工具有类似的扩展)时,你可以使用mysql监控工具来显示有多少请求(在Insert / Update / Loaddata中拆分) / ...)你正在解雇。

使用这些工具,您可以看到正在生成的使用情况和负载。 特别是当数据发生变化时,可能会导致更多的访问/加载(缺少索引,因为大的m:n-tables更多的查询,...),您就会认出它。

非常方便,您可以在休息时进行检查。没有打字,没有东西,只需查看图表。

答案 4 :(得分:0)

我认为最精确的方法是,无需修改数据库或应用程序即可运行,将配置数据库管理系统以记录所有事件。

您将留下一个日志文件,该文件是可以按需分析的文本文件。

以下是The General Query Log manual page,可以帮助您入门。