本文只要是關于二級緩存怎么清理或者關閉二級緩存的辦法介紹,希望本文能讓你對二級緩存有更深的理解。
二級緩存
CPU緩存(Cache Memory)位于CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。最初緩存只有一級,二級緩存(L2 CACHE)出現是為了協調一級緩存與內存之間的速度。二級緩存比一級緩存速度更慢,容量更大,主要就是做一級緩存和內存之間數據臨時交換的地方用。實際上,現在Intel和AMD處理器在一級緩存的邏輯結構設計上有所不同,所以二級緩存對CPU性能的影響也不盡相同。
緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取并送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取并送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以后對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存后內存。 最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而制造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。
怎么關閉二級緩存
解決方法:
打開電源后,出現CPU主頻和內存容量時,按下DEL鍵,進入CMOS SETUP頁面。
進入BIOS→Advanced BIOS Features(高級BIOS特征)
→CPU L1 & L2 Cache(CPU一級和二級緩存)
打開(Enabled)或關閉(Disabled)CPU內部緩存(L1)和外部緩存(L2);
(按Page UP/Down鍵轉換)。
按Esc鍵退回到COMOS SETUP頁面 將光標移動到SAVE&EXIT SETUP 鍵入Y并回車
怎么清理二級緩存
* save、update、saveOrupdate、load、get、list、query、Criteria方法都會填充二級緩存
* get、load、iterate會從二級緩存中取數據
* session.save(user) 如果user主鍵使用“native”生成,則不放入二級緩存。
(1)開啟二級緩存
《property name=“cache.use_second_level_cache”》true《/property》
(2)為hibernate指定二級緩存的實現類
《property name=“cache.provider_class”》
org.hibernate.cache.OSCacheProvider
《/property》
(3)為OSCache緩存創建配置文件(需要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.配置二級緩存的供應商
《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=“”/》
二級緩存保存數據原理:
結語
關于二級緩存的相關介紹就到這了,如有不足之處歡迎指正。
評論
查看更多