在生产中记录 SQL 查询?

tre*_*nik 5 php mysql sql transaction-log

我对是否也在生产中记录 SQL 查询感到进退两难。

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

什么会使或不会使过程变慢?或者它可以依赖什么?

Bre*_*ley 5

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

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

  • 这就是我们在我们的应用程序上所做的。如果它很慢,我们会记录查询并在日志消息中放入一个易于 grepable 的字符串。如果我们想要所有的查询,我们就去 dbas。如果您依赖 DB 查询日志,建议在每个查询中放置一个唯一的注释字符串,以便您知道它来自应用程序的哪个位置。这很有效,因为我们关心的是出了什么问题,而不是正在发生的一切。 (2认同)