2011-01-26 52 views
5

Chính sách bộ nhớ đệm tốt nhất trong Hibernate \ Grails là gì. Cache tất cả các thực thể và truy vấn hay không và cách tìm giải pháp tốt nhất?Grails Hibernate: Để lưu bộ nhớ cache hoặc không lưu vào bộ nhớ cache?

Ở đây, cấu hình hibernate hibernate của tôi.

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 cấu hình

<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" 
/> 

Trả lời

11

Chính sách bộ nhớ đệm tốt nhất là: không có bộ nhớ đệm. Nghiêm túc, bộ nhớ đệm (và bất kỳ tối ưu hóa) nên được thực hiện chỉ để giải quyết một vấn đề hiện có. Nếu bạn không gặp sự cố về hiệu suất, đừng sử dụng bộ nhớ đệm. Nếu bạn gặp vấn đề về hiệu suất, hãy áp dụng quy trình 5 bước đơn giản này để giải quyết các vấn đề về hiệu suất:

  1. Đo lường.
  2. Đo lường.
  3. Tối ưu hóa (thêm bộ nhớ đệm, ví dụ)
  4. Đo lường.
  5. Đo lường.

Lưu ý rằng nếu bạn không hiểu cách bộ nhớ đệm hoạt động trong Hibernate, bạn có thể có hiệu suất kém, thay vì cải thiện nó. Ngoài ra, ngay cả khi bạn hiểu cách hoạt động của bộ nhớ đệm trong Hibernate, có thể có các hiệu ứng khác ảnh hưởng đến hiệu suất, làm cho vòng lặp cơ sở dữ liệu nhanh hơn tìm kiếm bộ nhớ cache. Đó là lý do tại sao bạn nên đo trước và sau khi thực hiện "cải tiến".

+0

Chính sách bộ nhớ đệm tốt nhất là: không có bộ nhớ đệm! ?? Trường hợp bạn cao khi bạn viết này? –

+0

Bạn đã đọc những gì tôi đã viết chưa? Nếu bản năng đầu tiên của bạn khi phải đối mặt với một sự chậm chạp là để cache những thứ, sau đó nó là sai. Nếu chắc chắn rằng bộ nhớ đệm là sẽ giúp đỡ, và bạn đã đo nó, sau đó bộ nhớ đệm là một thay thế. Không biết nó hoạt động như thế nào, khi nào nó hoạt động và tại sao nó hoạt động, tốt hơn là không cache chút nào. – jpkrohling

+0

Tôi đọc những gì bạn đã viết và tôi đồng ý với quy trình 5 bước. Tôi không đồng ý với cách tiếp cận tích cực đối với bộ nhớ đệm nói chung và cách bạn bắt đầu lập luận của mình. Có rất nhiều hoạt động năng động và hàng ngàn người dùng nhấn cơ sở dữ liệu hoặc các dịch vụ khác trong các trang web lớn. Để nói rằng bộ nhớ đệm tốt nhất là không bộ nhớ đệm là vô lý! ... trừ khi bạn đang nói về blog của bà tôi –

Các vấn đề liên quan