我即将开始开发一个日志系统,以便将来在当前的PHP应用程序中实现,以便从MYSQL数据库中获取负载和使用统计信息。
该统计数据稍后将用于获取每秒数据库调用数、查询次数等信息。
当然,这只会在应用程序处于测试阶段时使用,因为它本身肯定会造成一些额外的负载。
然而,我现在最大的疑问是,我是应该使用MYSQL来记录查询,还是应该使用基于文件的系统。我猜,当使用基于文件的系统处理日志时,创建允许从多个位置进行写入的东西会有点头疼?
你会怎么做?
发布于 2010-01-29 02:40:28
MySQL已经内置了日志-手册中的Chapter 5.2对此进行了描述。您可能会对通用查询日志(所有查询)、二进制查询日志(更改数据的查询)和慢查询(耗时过长或不使用索引的查询)感兴趣。
如果您坚持使用自己的解决方案,则需要编写一个数据库中间层,所有的DB调用都要经过这个中间层,它可以处理时间方面的问题。至于你在哪里编写它们,如果你是在devel中,这并不是太重要,但使用第二个db的想法并不坏。您不需要使用完全独立的DB,只要使用不同的MySQL实例(在不同的机器上,或者只是使用不同端口的不同实例)即可。我建议使用第二个MySQL实例而不是文件系统-您将获得所有优秀的SQL函数,如SUM和AVG来解析您的数据。
发布于 2010-01-29 02:40:26
使用常规日志,它将显示客户端活动,包括所有查询:
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
如果您需要关于每次查询所用时间的非常详细的统计信息,请使用long_query_time为0(或其他足够短的时间)的慢日志:
http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
然后根据需要使用http://www.maatkit.org/对日志进行分析。
发布于 2010-01-29 02:36:42
如果您感兴趣的是长期的、非实时的分析,那么打开MySQL的常规查询日志。有大量的工具可以对查询日志(包括常规查询和慢查询)进行分析,为您提供有关运行时间、平均返回行数等信息。这似乎就是您正在寻找的。
https://stackoverflow.com/questions/2155825
复制相似问题