Caching chỉ hoạt động cho get()
cuộc gọi theo mặc định, nhưng truy vấn sử dụng bộ đệm truy vấn nếu bạn cập nhật chúng với cache: true
(tiêu chí và HQL).
cache true
tạo ra một đọc-ghi bộ nhớ cache nhưng bạn có thể cấu hình một bộ nhớ cache read-only với
static mapping = {
cache usage:'read-only'
}
Cache chỉ đọc là tốt cho dữ liệu tra cứu mà không bao giờ thay đổi, đối với các quốc gia ví dụ, các nước, vai trò, vv ..
Nếu bạn có các lớp miền cập nhật, tạo hoặc xóa thường xuyên, truy vấn bộ nhớ cache thường sẽ chậm hơn không lưu vào bộ nhớ đệm. Điều này là do những thay đổi như thế này khiến tất cả truy vấn được lưu trong bộ nhớ cache bị xóa, vì vậy bạn thường truy cập trực tiếp vào cơ sở dữ liệu. Xem http://tech.puredanger.com/2009/07/10/hibernate-query-cache/ để biết mô tả chi tiết hơn về điều này. Vì lý do này, tôi hiếm khi sử dụng bộ nhớ đệm truy vấn và thường vô hiệu hóa nó hoàn toàn với các lớp
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=false
cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
Domain mà là "đọc chủ yếu" là những ứng cử viên tốt nhất cho đọc-ghi bộ nhớ đệm. Các bộ nhớ cache được xóa cho mỗi lần cập nhật, tạo và xóa, nhưng nếu những phần này hiếm khi bạn sẽ thấy hiệu suất tổng thể tăng lên.
Hibernate có API để giám sát việc sử dụng bộ nhớ cache. Các tiện ích http://grails.org/plugin/app-info và http://grails.org/plugin/hibernate-stats làm cho thông tin có sẵn và bạn có thể sử dụng cách tiếp cận ở đó trong mã của riêng bạn.
Nguồn
2011-06-20 16:21:29
Cảm ơn! Lời giải thích tuyệt vời. – RyanLynch
Có cách nào để bộ nhớ cache hết thời gian chờ và đọc lại không? I E. chỉ định tuổi tối đa? Grails caching có vẻ rất cơ bản. Tôi thấy có một số plugin ehcache, bao gồm "Ehcache Cache Plugin được Pivotal hỗ trợ", nhưng không rõ cách này sẽ tương tác hoặc can thiệp với grails được xây dựng trong bộ nhớ đệm miền thông qua hibernate thông qua bộ nhớ đệm (xuất hiện cũng là ehcache). –
Hey Burt, Có thể tách biệt Domain cach cache thông qua các vùng ngủ đông không? Điều này có nghĩa là bản cập nhật trong một tên miền không dẫn đến việc xóa bộ đệm truy vấn của tất cả các miền khác. –