2011-10-03 61 views
5

我有一個使用Rails 2.3用Ruby編寫的應用程序。我們使用ActiveRecord。如何確定Ruby-on-Rails代碼生成了一些SQL?

偶爾,ActiveRecord會生成一些非常糟糕的低效SQL。我們可以使用慢查詢日誌並使用new relic來確定哪些SQL有問題。但是,確定生成有問題的SQL的軟件中的代碼行非常困難。它通常是使用關聯和named_scopes構建的查詢。

我真的很喜歡某種方式來標記SQL日誌文件中的文件名和我們的代碼生成它(而不是執行查詢的ActiveRecord行)。

該信息應通過調用者數組提供。我不想轉儲整個數組,我只想要我們的代碼的文件名和行直接負責。有沒有一個寶石已經這樣做?如果沒有,有什麼建議嗎?

+1

一位同事建議我們將SQL本身的文件名和行號(一旦我們確定它們是什麼)放在註釋中,而不是放在常規的生產日誌文件中。這樣,慢速查詢日誌也會有這個信息。 – ChrisInEdmonton

回答

0

New Relic將爲您提供具有Slow SQL和事務跟蹤功能的個別慢SQL查詢的完整堆棧跟蹤。