2016-04-22 78 views
0

所有HQL沒有HQL記錄過於生硬的工具我。有沒有人知道hibernate中的設置/參數,這將允許我爲不同的查詢劃分優先級/對HQL日誌進行分類?例如,我希望能夠在每個查詢中設置一個類別或「查詢類型」標記,並調整每個查詢類型的../WARN/INFO/DEBUG/ ..日誌記錄級別。HQL日誌類別/選擇性Hibernate HQL日誌記錄?

我可以看到有喜歡的東西

  • org.hibernate.event.spi.EventType,所包含的事件,我可以在聽者根據我自己設置的地方也許註冊偵聽器以及觸發記錄。

  • org.hibernate.Interceptor,它定義方法要求在一個會話特定的事件,我可以重寫類似的東西。

但我無法立即發現任何與運行查詢相對應的入口點。一個簡單的方法我能想象/願望是設置在@NamedQuery註釋字段,但我沒有看到任何明顯的有兩種..

+0

不,沒有辦法做到這一點。你爲什麼想這樣做,我幾乎無法想象一個有用的用例呢? –

+0

用例是處理大量數據的客戶端系統的日誌/性能分析。有些查詢我們很滿意,在其他情況下,我們無法預先知道,因爲它們可能是根據用戶設置動態生成的,因此調用hibernate層時的選擇性會很有用。雖然伐木是好的,但我們之前對過度採伐有抱怨 - 這將是減少原木噪音的一種方法。 – nsandersen

回答

0

記錄這些查詢在生產系統的性能會產生不利影響。

我會建議使用數據庫(例如甲骨文OEM)的分析工具,而不是找出任何昂貴的查詢。您還可以直接查詢許多數據庫中的系統表以識別長時間運行的查詢,頻繁執行的查詢等。

將hibernate查詢轉換爲您的意願可能非常棘手,因此您可能最終希望修復大多數通過緩存頻繁獲取的數據或使用索引和數據庫中的分區來查詢性能問題。

+0

記錄將需要一些CPU週期,是的(另一個原因是能夠控制日誌,如上所述!),但絕大多數時間花在數據庫更新和查詢在這種情況下。 AWR報告通常很有幫助,但從客戶那裏獲取普通日誌通常比較容易,因爲他們不需要繁忙的數據庫管理員參與,而我們很少與其建立關係。日誌也會給某些事物的時間,而不是一個更加統計的觀點,這也是有用的。 – nsandersen