2011-01-26 28 views
5

हाइबरनेट \ Grails में सबसे अच्छी कैशिंग नीति क्या है। सभी संस्थाओं और प्रश्नों को कैश करें या नहीं और सर्वोत्तम समाधान कैसे प्राप्त करें?Grails Hibernate: कैश करने या कैश करने के लिए नहीं?

यहां मेरे हाइबरनेट कॉन्फ़िगरेशन।

hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = true 
    cache.provider_class = 'org.hibernate.cache.EhCacheProvider' 
    connection.useUnicode = true 
    connection.characterEncoding = 'UTF-8' 
    connection.provider_class = 'org.hibernate.connection.C3P0ConnectionProvider' 
    dialect = 'org.hibernate.dialect.MySQL5InnoDBDialect' 
    order_updates = true 
    c3p0.min_size = 5 
    c3p0.max_size = 20 
    c3p0.max_statements = 20 * 10 
    c3p0.idle_test_period = 15 * 60 
} 

ehcache config

<defaultCache 
     maxElementsInMemory="10000" 
     eternal="false" 
     timeToIdleSeconds="120" 
     timeToLiveSeconds="120" 
     overflowToDisk="true" 
     maxElementsOnDisk="10000000" 
     diskPersistent="false" 
     diskExpiryThreadIntervalSeconds="120" 
     diskSpoolBufferSizeMB="100" 
     memoryStoreEvictionPolicy="LRU" 
/> 

<cache 
      name="org.hibernate.cache.StandardQueryCache" 
      maxElementsInMemory="50" 
      eternal="false" 
      timeToLiveSeconds="120" 
      overflowToDisk="true" 
/> 

उत्तर

11

सबसे अच्छा कैशिंग नीति है: कोई कैशिंग। गंभीरता से, कैशिंग (और कोई भी अनुकूलन) केवल मौजूदा समस्या को हल करने के लिए किया जाना चाहिए। यदि आपके पास प्रदर्शन समस्याएं नहीं हैं, तो कैशिंग का उपयोग न करें। यदि आपके पास प्रदर्शन समस्याएं हैं, तो प्रदर्शन समस्याओं को हल करने के लिए इस सरल 5-चरण प्रक्रिया को लागू करें:

  1. मापें।
  2. उपाय।
  3. अनुकूलन (उदाहरण के लिए कैशिंग जोड़ें)
  4. मापें।
  5. उपाय।

ध्यान दें कि अगर आपको समझ में नहीं आता कि कैशिंग हाइबरनेट में कैसे काम करती है, तो आप इसे बेहतर बनाने के बजाय खराब प्रदर्शन कर सकते हैं। साथ ही, अगर आप समझते हैं कि हाइबरनेट में कैशिंग कैसे काम करती है, तो प्रदर्शन को प्रभावित करने वाले अन्य प्रभाव भी हो सकते हैं, जिससे कैश को देखने से डेटाबेस राउंडट्रिप तेज हो सकता है। यही कारण है कि आपको "सुधार" करने से पहले और बाद में उपाय करना चाहिए।

+0

सर्वश्रेष्ठ कैशिंग नीति है: कोई कैशिंग नहीं है ?? जब आप इसे लिखते हैं तो आप कहां ऊंचे होते हैं? –

+0

क्या आपने जो लिखा है उसे पढ़ा? यदि आपकी पहली प्रवृत्ति धीमेपन का सामना कर रही है तो चीजों को कैश करना है, तो यह गलत है। यदि सुनिश्चित हो कि कैशिंग मदद करने वाली है, और आपने इसे माप लिया है, तो कैशिंग एक विकल्प है। यह जानने के बिना कि यह कैसे काम करता है, जब यह काम करता है और यह क्यों काम करता है, तो कैश नहीं करना बेहतर होता है। – jpkrohling

+0

मैंने जो लिखा है उसे पढ़ा और मैं 5 चरणों की प्रक्रिया से सहमत हूं। मैं आम तौर पर कैशिंग की ओर आक्रामक दृष्टिकोण से सहमत नहीं हूं और आप अपना तर्क कैसे शुरू करते हैं। बड़ी वेबसाइटों में कई गतिशील गतिविधियां और हजारों उपयोगकर्ता डेटाबेस या अन्य सेवाओं को मार रहे हैं। सर्वश्रेष्ठ कैशिंग कहने के लिए गैर कैशिंग बेतुका है! ... जब तक कि आप मेरी दादी के ब्लॉग –

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