6

我在是否也要在生产中记录 SQL 查询方面遇到两难境地。

我不知道在 PHP 中写入文件有多慢。可能一些基准可以给出一些答案,但我想看看你们之前的想法。

什么会使过程变慢或不会变慢?或者它可能取决于什么?

4

4 回答 4

5

大多数数据库都有用于记录查询和慢速查询的内置选项,因此您不需要通过 PHP 进行记录。除非您遇到问题并且这是故障排除过程的一部分,否则您不应记录生产中的所有查询。您可以并且应该记录慢速查询,以便查看可能导致您的生产站点变慢的原因。

如果您的框架支持它,则只有在页面生成需要一定时间时才可以记录查询(这就是我所做的)。然后,您有条件地进行日志记录,并且可能会发现正在运行的查询数量过多。

于 2010-06-04T18:04:45.397 回答
1

你有几个选择:

  • 让您的数据库记录查询
  • 创建一个带有静态方法的记录器类,该方法使用缓存的文件句柄来写入。这非常快。此外,您可以将此类设置为查看配置中的日志变量,以忽略传入的 sql 查询或将其记录到文件中。假设您使用的是数据库 API,您可以扩展查询功能以包含此额外的代码行以用于(可选)日志记录
于 2010-06-04T18:00:57.433 回答
1

作为记录(您没有指定您的数据库),Postgresql 有一堆与日志记录相关的选项。其中,我使用log_min_duration_statement来记录运行超过 N 秒的查询。用于分析,无需填充日志文件并干扰性能。我敢打赌大多数数据库都有类似的东西。

于 2010-06-04T18:11:55.477 回答
0

好吧,第 1 件会很慢的事情是通过访问数据库进行磁盘 IO。最好的答案是让您在一些不平凡的情况下尝试它(记住,对于小 n 来说一切都很快)并询问一些利益相关者性能是否可以接受。这可能不是您想要的答案,但它确实是最好的答案。

于 2010-06-04T18:01:38.040 回答