2015-11-02 8 views
5

हाइबरनेट न्यूबी यहाँ।हाइबरनेट - पहली क्वेरी हमेशा लंबे समय तक लोड होती है

जो मैं समझता हूं उससे यह है कि, पहला स्तर कैश केवल तब उपलब्ध होता है जब कोई सत्र खुला होता है। जब सत्र बंद हो जाता है, तो पहले स्तर पर सभी कैश किए गए इकाइयों को निकाल दिया जाता है/हटा दिया जाता है। क्या ये सही है?

मेरे पास हाइबरनेट फ्रेमवर्क का उपयोग कर जावा में विकसित एक सरल सीआरयूडी ऐप है। और हर बार जब मेरा एप्लिकेशन शुरू होता है, लोड करता है और अपना पहला क्वेरी ऑपरेशन निष्पादित करता है, तो निष्पादन समय आमतौर पर सफल क्वेरी संचालन से अधिक होता है। पहली क्वेरी को निष्पादित करने और सफल होने के लिए आमतौर पर 17ms लगते हैं।

मेरा सवाल यह है, क्या यह वास्तव में एप्लिकेशन की शुरुआत पर हाइबरनेट का व्यवहार है? क्या डेटा कहीं कैश में संग्रहीत पहले क्वेरी ऑपरेशन से लोड किया गया है? (निश्चित रूप से सत्र कैश नहीं है क्योंकि मेरा पहला क्वेरी ऑपरेशन निष्पादित करने के बाद, सत्र ठीक बाद बंद हो जाता है) क्या उत्सुक लोडिंग इस व्यवहार को प्रभावित करती है?

मुझे वास्तव में कोई संकेत नहीं है कि हाइबरनेट दस्तावेज़ों ने इसे कवर नहीं किया है। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं।

मैं किसी भी मदद की सराहना करता हूं क्योंकि मुझे वास्तव में यह नहीं पता कि इस बारे में कहां पढ़ना है।

संपादित करें:

पहले::

100222 nanoseconds spent acquiring 1 JDBC connections; 
0 nanoseconds spent releasing 0 JDBC connections; 
23238430 nanoseconds spent preparing 3 JDBC statements; 
8333256 nanoseconds spent executing 3 JDBC statements; 
0 nanoseconds spent executing 0 JDBC batches; 
0 nanoseconds spent performing 0 L2C puts; 
0 nanoseconds spent performing 0 L2C hits; 
0 nanoseconds spent performing 0 L2C misses; 
40215588 nanoseconds spent executing 1 flushes (flushing a total of 3 entities and 3 collections); 
135213 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections) 

दूसरा:

168597 nanoseconds spent acquiring 1 JDBC connections; 
0 nanoseconds spent releasing 0 JDBC connections; 
2332976 nanoseconds spent preparing 3 JDBC statements; 
6427565 nanoseconds spent executing 3 JDBC statements; 
0 nanoseconds spent executing 0 JDBC batches; 
0 nanoseconds spent performing 0 L2C puts; 
0 nanoseconds spent performing 0 L2C hits; 
0 nanoseconds spent performing 0 L2C misses; 
1095389 nanoseconds spent executing 1 flushes (flushing a total of 3 entities and 3 collections); 
17600 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections) 

अधिक जानकारी के लिए, यहाँ पहले और दूसरे प्रश्न के संचालन के हाइबरनेट आंकड़ा है वही क्वेरी निष्पादन लेकिन विभिन्न निष्पादक समय की लंबाई पर।

+1

संभावित रूप से पहली क्वेरी प्रारंभिक इकाई को प्रारंभ करने के लिए ट्रिगर करती है, डेटासॉर को कंटेनर द्वारा प्रारंभ किया जाना चाहिए और कनेक्शन पूल भरना होगा। – Gimby

+0

@Gimby यह सब 17 एमएस से अधिक समय लेगा। –

+0

@DraganBozanovic निर्भर करता है, मेरे स्थानीय ग्लासफ़िश/पेरा इंस्टॉलेशन पर दृढ़ता इकाई किसी भी समय सेटअप नहीं होती है, लेकिन ऐसा तब होता है जब इसका पहले उपयोग किया जाता है। यह शायद इस बात पर निर्भर करता है कि सर्वर शारीरिक रूप से मांग पर क्या सेट करता है और क्या नहीं। मेरा मुद्दा यह है कि पहला उपयोग प्रारंभिक हिट असामान्य नहीं है। – Gimby

उत्तर

1

मेरा प्रश्न यह है, यह वास्तव में आवेदन की प्रारंभ पर हाइबरनेट के व्यवहार है?

उदाहरण के लिए जब आप एक वर्ड दस्तावेज़ खोलते हैं, तो इसे पहली बार लेना होगा, जब आप इसे बंद करेंगे और इसे फिर से खोलेंगे। तो, यह वास्तव में एक हाइबरनेट विशिष्ट व्यवहार नहीं है।

क्या डेटा कैश में संग्रहीत पहले क्वेरी ऑपरेशन से लोड किया गया डेटा है?

यह 'हर जगह' कैश किया गया है। डिस्क में इसके कैश का स्तर है। ऑपरेटिंग सिस्टम चीजें कैश। डेटाबेस निश्चित रूप से निश्चित रूप से/हाल ही में एक्सेस किए गए डेटा को कैश करेगा। यहां तक ​​कि प्रोसेसर के पास भी अपने कैश हैं।

लेकिन इसके अलावा, जावा के पास इसकी प्रकृति से गर्म समय है। जब आप पहली बार कक्षा तक पहुंचते हैं, तो यह डिस्क से लोड होता है, जेआईटी द्वारा संकलित, आदि

हम यहां लगभग 17ms की बात कर रहे हैं; यह उपरोक्त सभी पर विचार करने के लिए काफी अच्छा गर्म समय है।

+0

तो इसका मतलब है कि, सभी हाइबरनेट अनुप्रयोगों में, प्रत्येक पहला क्वेरी ऑपरेशन हमेशा सफल प्रश्नों से अधिक समय लेगा? तो हाइबरनेट कैशिंग यहां नहीं होता है? – Heisenberg

+1

सही, यह किसी भी तरह के हाइबरनेट कैशिंग से संबंधित नहीं है। –

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