JavaRush /Kurslar /All lectures for UZ purposes /Kesh mexanizmini sozlash

Kesh mexanizmini sozlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

Keshni sozlash

Keling, hibernate.cfg.xml faylidagi kex sozlashlarimizga qaytamiz:

<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletEhCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>

Birinchi qatorga e'tibor bering - bunda kesh dvigatelining sinf nomi berilgan. Aslida, Hibernate o'z ichida keshni amalga oshirmaydi, balki o'z kesh dvigatelini amalga oshirish uchun to'plam interfeyslarni taqdim etadi.

Ommabop amalga oshirishlaridan ba'zilari:

  • EHCache
  • OSCache
  • SwarmCache
  • JBoss TreeCache

EHCache

U xotirada yoki diskda, shuningdek klaster keshni qo'llab-quvvatlaydi va Hibernate so'rov natijalarini qo'shimcha keshlashni qo'llab-quvvatlaydi.

OSCache

Bitta JVMda xotira va diskka keshlashni qo'llab-quvvatlaydi, boyl jixatlar muddatini tugatish siyosati va so'rovlar keshini qo'llab-quvvatlaydi.

SwarmCache

JGroups asosidagi klaster kesh. U klaster qilingan bekor qilishdan foydalanadi, lekin Hibernate so'rov keshini qo'llab-quvvatlamaydi.

JBoss Cache

To'liq tranzaksiyali replikatsiyalangan klaster kesh, shuningdek, JGroups ko'p manzilli kutubxonaga asoslangan. U replikatsiya yoki bekor qilishni, sinxron yoki asinxron aloqa, shuningdek optimistik va pessimist blokirovka qo'llab-quvvatlaydi. Hibernate so'rov keshini qo'llab-quvvatlaydi.

Bu dvigatellar barcha parallel kirish strategiyalarini qo'llab-quvvatlamaydi. Haqiqiy holat quyidagi jadvalda keltirilgan:

Strategy/Provider Read-only Nonstrict read-write Read-write Transactional
EHCache X X X
OSCache X X X
SwarmCache X X
JBoss Cache X X

EHCache sozlash namunasi

EHCache dvigateli o'zining ehcache.xml deb nomlangan konfiguratsion fayliga ega. Bunday faylning taxminiy tarkibi:


<diskStore path="java.io.tmpdir"/>
 
<defaultCache
    maxElementsInMemory = "1000"
    eternal = "false"
    timeToIdleSeconds = "120"
    timeToLiveSeconds = "120"
    overflowToDisk = "true"
/>
 
<cache name = "Employee"
    maxElementsInMemory = "500"
    eternal = "true"
    timeToIdleSeconds = "0"
    timeToLiveSeconds = "0"
    overflowToDisk = "false"
/>

Bu yerda sen kesh parametrlarini umuman yoki har bir obyekt uchun alohida sozlashing mumkin. Batafsilroq rasmiy hujjatlarda o'qi.

Kesh statistikasi tahlili

Agar keshlash mexanizmi qanchalik yaxshi sozlanganligini tekshirish zaruriyati tug'ilsa, Hibernate buning uchun maxsus Statistics obyektini taqdim etadi.

Misol:


Statistics statistics = session.getSessionFactory().getStatistics();
CacheRegionStatistics cacheStatistics = statistics.getDomainRegionStatistics(“com.javarush.employee”);
 
long hitCount = cacheStatistics.getHitCount();
long missCount = cacheStatistics.getMissCount();
double hitRatio = (double) hitCount / (hitCount + missCount);

Biz buni batafsil ko'rib chiqmaymiz, chunki ko'p yillar o'tib, sen keshlashning standart yechimlari etarli emasligini his qilmaguningcha, ularni qo'lda yaxshilashga ehtiyoj sezilmaydi. Aytgancha, balki xuddi shunga o'xshash holatdan shu izoh olingan:


// Hurmatli dasturchi:
// Agar sen bu dastur qismida “optimallashtirish”ni tugatsang
// va buni qilish qanchalik katta xato ekanligini tushunsang,
// keyingi odamlarga ogohlantirish sifatida quyidagi hisoblagichni oshir:
// bu yerda_sarf etilgan_soatlar_soni = 42
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION