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