本文只要是關(guān)于二級緩存怎么清理或者關(guān)閉二級緩存的辦法介紹,希望本文能讓你對二級緩存有更深的理解。
二級緩存
CPU緩存(Cache Memory)位于CPU與內(nèi)存之間的臨時存儲器,它的容量比內(nèi)存小但交換速度快。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速度。最初緩存只有一級,二級緩存(L2 CACHE)出現(xiàn)是為了協(xié)調(diào)一級緩存與內(nèi)存之間的速度。二級緩存比一級緩存速度更慢,容量更大,主要就是做一級緩存和內(nèi)存之間數(shù)據(jù)臨時交換的地方用。實際上,現(xiàn)在Intel和AMD處理器在一級緩存的邏輯結(jié)構(gòu)設(shè)計上有所不同,所以二級緩存對CPU性能的影響也不盡相同。
緩存的工作原理是當(dāng)CPU要讀取一個數(shù)據(jù)時,首先從緩存中查找,如果找到就立即讀取并送給CPU處理;如果沒有找到,就用相對慢的速度從內(nèi)存中讀取并送給CPU處理,同時把這個數(shù)據(jù)所在的數(shù)據(jù)塊調(diào)入緩存中,可以使得以后對整塊數(shù)據(jù)的讀取都從緩存中進(jìn)行,不必再調(diào)用內(nèi)存。
正是這樣的讀取機(jī)制使CPU讀取緩存的命中率非常高(大多數(shù)CPU可達(dá)90%左右),也就是說CPU下一次要讀取的數(shù)據(jù)90%都在緩存中,只有大約10%需要從內(nèi)存讀取。這大大節(jié)省了CPU直接讀取內(nèi)存的時間,也使CPU讀取數(shù)據(jù)時基本無需等待。總的來說,CPU讀取數(shù)據(jù)的順序是先緩存后內(nèi)存。 最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進(jìn)行了分類。當(dāng)時集成在CPU內(nèi)核中的緩存已不足以滿足CPU的需求,而制造工藝上的限制又不能大幅度提高緩存的容量。因此出現(xiàn)了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內(nèi)核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分?jǐn)?shù)據(jù)緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數(shù)據(jù)和執(zhí)行這些數(shù)據(jù)的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。
怎么關(guān)閉二級緩存
解決方法:
打開電源后,出現(xiàn)CPU主頻和內(nèi)存容量時,按下DEL鍵,進(jìn)入CMOS SETUP頁面。
進(jìn)入BIOS→Advanced BIOS Features(高級BIOS特征)
→CPU L1 & L2 Cache(CPU一級和二級緩存)
打開(Enabled)或關(guān)閉(Disabled)CPU內(nèi)部緩存(L1)和外部緩存(L2);
(按Page UP/Down鍵轉(zhuǎn)換)。
按Esc鍵退回到COMOS SETUP頁面 將光標(biāo)移動到SAVE&EXIT SETUP 鍵入Y并回車
怎么清理二級緩存
* save、update、saveOrupdate、load、get、list、query、Criteria方法都會填充二級緩存
* get、load、iterate會從二級緩存中取數(shù)據(jù)
* session.save(user) 如果user主鍵使用“native”生成,則不放入二級緩存。
(1)開啟二級緩存
《property name=“cache.use_second_level_cache”》true《/property》
(2)為hibernate指定二級緩存的實現(xiàn)類
《property name=“cache.provider_class”》
org.hibernate.cache.OSCacheProvider
《/property》
(3)為OSCache緩存創(chuàng)建配置文件(需要hibernate_Advance_Surpport_lib)
src/oscache.properties
修改配置中的:
cache.capacity=1000 指定緩存可以容納多少對象
(4)指明哪些類需要放入二級緩存,需要長期使用到的對象才有必要放入二級緩存
《class-cache class=“entity.PetInfo” usage=“read-only” /》 //不允許更新緩存中的對象
《class-cache class=“entity.PetInfo” usage=“read-write” /》 //允許更新緩存中的對象
或在orm文件中:
《class name=“entity.PetInfo” table=“PetInfo” schema=“dbo” catalog=“epet”》
《cache usage=“read-only”/》
。..
《/class》
(5)如果需要清除二級緩存,使用下面語法
sessionFactory.evict(User.class) 清除所有user
sessionFactory.evict(User.class,Id) 清除指定user
怎么使用二級緩存
*1.引入如下jar包。
ehcache-1.2.3.jar 核心庫
backport-util-concurrent.jar
commons-logging.jar
*2.配置Hibernate.cfg.xml開啟二級緩存
《property name=“hibernate.cache.use_second_level_cache”》true《/property》
*3.配置二級緩存的供應(yīng)商
《property name=“hibernate.cache.provider_class”》org.hibernate.cache.EhCacheProvider《/property》
在大配置文件(hibernate.cfg.xml)中配置
《class-cache usage=“read-write” class=“cn.happy.entity.Student”/》
《collection-cache usage=“read-write” collection=“”/》
二級緩存保存數(shù)據(jù)原理:
結(jié)語
關(guān)于二級緩存的相關(guān)介紹就到這了,如有不足之處歡迎指正。
評論