2010-02-28 6 views
12

वर्तमान में, यह जांचने के लिए कि क्या डेटाबेस क्वेरी के लिए हाइबरनेट द्वितीय-स्तरीय कैश का उपयोग किया गया था, मैं यह देखने के लिए कि क्या ग्राइस/हाइबरनेट ने SQL क्वेरी को ट्रिगर किया है, मैं अपने SQL लॉग (p6spy या logSql = datasource.groovy में सत्य) जांचता हूं। । और मुझे लगता है कि अगर क्वेरी लॉग नहीं हुई थी, तो इसका मतलब यह हो सकता है कि कैश का उपयोग किया गया था।कैसे पता/लॉग इन करें कि हाइबरनेट द्वितीय-स्तरीय कैश का उपयोग किया गया था या नहीं?

यह एक साधारण जानकारी के लिए बहुत जटिल है, है ना?

तो क्या आप जानकारी प्राप्त करने और लॉग इन करने का एक आसान तरीका जानते हैं: "कैश का उपयोग बनाम डीबी क्वेरी ट्रिगर किया गया था"?

EDIT: पास्कल अनुशंसाओं के बाद, मैंने अपने trace 'org.hibernate.cache' को मेरे log4j कॉन्फ़िगरेशन में जोड़ा है।

उत्तर

6

आप को सक्रिय कर सकता है org.hibernate.cachecategory सभी दूसरे स्तर कैश गतिविधि लॉग इन करें। ऐसा करने के लिए (Grails FAQ के अनुसार), अपनी Config.groovy फ़ाइल संपादित करें। के साथ लाइन खोजें:

hibernate = "off" 

और साथ बदलें:

hibernate.cache = "trace,stdout" 
5

संक्षिप्त उत्तर यह है कि जब क्वेरी लॉगिंग सक्षम होती है, तो प्रत्येक क्वेरी लॉग होती है।

विभिन्न आंकड़े SessionFactory.getStatistics() और Session.getStatistics() के माध्यम से उपलब्ध हैं। प्रश्न निष्पादन और क्वेरी कैश हिट और मिस गणना सत्र सांख्यिकी पर उपलब्ध नहीं हैं।

एक परीक्षण वातावरण है, जहां आप समवर्ती सत्र की सुविधा नहीं है, तो आप अपने संचित करने योग्य क्वेरी दो बार करते हैं और दावा है कि SessionStatistics.getQueryCacheHitCount() के दोनों और SessionStatistics.getQueryExecutionCount() केवल द्वारा 1.

Hibernate Profiler वृद्धि हुई इन आंकड़े और लॉग के सभी प्रस्तुत कर सकता है सबसे प्रभावी ढंग से।

संबंधित मुद्दे

 संबंधित मुद्दे