记录mysql查询

记录mysql查询,mysql,performance,logging,load,stress,Mysql,Performance,Logging,Load,Stress,我即将开始开发一个日志系统,以便将来在当前PHP应用程序中实现,从而从MYSQL数据库获取负载和使用统计数据 该统计数据稍后将用于获取有关每秒数据库调用、查询时间等的信息 当然,这只会在应用程序处于测试阶段时使用,因为它本身肯定会导致一些额外的负载 然而,我现在最大的疑问是我应该使用MYSQL来记录查询,还是使用基于文件的系统。我猜,当使用基于文件的系统来处理日志时,创建允许从多个位置写入的东西会有点头疼 你会怎么做呢?如果你在MySQL上做测试,你应该将结果存储在不同的数据库中,比如Postg

我即将开始开发一个日志系统,以便将来在当前PHP应用程序中实现,从而从MYSQL数据库获取负载和使用统计数据

该统计数据稍后将用于获取有关每秒数据库调用、查询时间等的信息

当然,这只会在应用程序处于测试阶段时使用,因为它本身肯定会导致一些额外的负载

然而,我现在最大的疑问是我应该使用MYSQL来记录查询,还是使用基于文件的系统。我猜,当使用基于文件的系统来处理日志时,创建允许从多个位置写入的东西会有点头疼


你会怎么做呢?

如果你在MySQL上做测试,你应该将结果存储在不同的数据库中,比如
Postgres
,这样你就不会增加操作的负载。

如果你感兴趣的只是长期的、非实时的分析,打开MySQL的常规查询日志记录。有很多工具可以对查询日志(常规查询和慢速查询)进行分析,为您提供有关运行时间、返回的平均行数等的信息。这似乎就是您要查找的内容。

使用常规日志,它将显示客户端活动,包括所有查询:

如果您需要非常详细的统计信息来说明每个查询所用的时间,请使用长查询时间为0(或其他足够短的时间)的慢速日志:


然后根据需要使用来分析日志。

MySQL已经内置了日志功能,本手册的第四部分介绍了这些功能。您可能会对常规查询日志(所有查询)、二进制查询日志(更改数据的查询)和慢速日志(耗时过长或不使用索引的查询)感兴趣


如果您坚持使用自己的解决方案,您将希望编写一个数据库中间层,让所有DB调用都能通过该层,它可以处理时间方面的问题。至于在哪里编写它们,如果您在devel中,这并不重要,但是使用第二个db的想法也不错。您不需要使用完全独立的数据库,就像使用不同的MySQL实例一样(在不同的机器上,或者只是使用不同端口的不同实例)。我倾向于使用第二个MySQL实例,而不是文件系统—您将获得所有良好的SQL函数,如SUM和AVG来解析您的数据。

我同意macabail的观点,但我只想补充一点,您可以将其与cron作业和一个简单的脚本相结合,以提取和生成您可能需要的任何统计信息