记录MySQL查询

3
我即将开始为当前的PHP应用程序开发一个日志系统,以从MYSQL数据库中获取负载和使用统计信息。
这些统计信息将在后续中用于获取每秒钟的数据库调用次数、查询时间等信息。
当然,在测试阶段才会使用此功能,因为它肯定会增加额外的负载。
然而,我现在最大的问题是是否应该使用MYSQL来记录查询,还是选择基于文件的系统。如果使用基于文件的系统来处理日志,那么允许多个位置进行写入可能会有点麻烦?
你会如何做呢?
5个回答

5

3
如果您只关心长期、非实时分析,请打开MySQL的常规查询记录。有大量工具可用于对查询日志(包括常规和慢速查询)进行分析,提供运行时间、平均返回行数等信息。看起来这正是您要找的东西。

3

MySQL已经内置了日志记录功能-手册的第5.2章中对此进行了描述。您可能会对常规查询日志(所有查询)、二进制查询日志(更改数据的查询)和慢查询日志(查询时间过长或不使用索引的查询)感兴趣。

如果您坚持使用自己的解决方案,您将需要编写一个数据库中间层,所有的数据库调用都通过该中间层进行,并处理时间方面的问题。至于在哪里编写它们,如果您在开发中,这并不太重要,但使用第二个数据库的想法还不错。您不需要使用完全独立的DB,只需使用MySQL的另一个实例(在不同的计算机上或仅使用不同端口的不同实例)。我建议您使用第二个MySQL实例而不是文件系统-您将获得所有良好的SQL函数,例如SUM和AVG来分析您的数据。


1

如果您正在对MySQL进行测试,应将结果存储在不同的数据库中,例如Postgres,这样您就不会增加操作的负载。


0

我同意macabail的观点,但我想补充一句,你可以将其与cron作业和简单脚本配对,以提取并生成所需的任何统计数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接