![緩存技術(shù)對比分析_第1頁](http://file4.renrendoc.com/view/2c261430a0e744051a9cf64af320b189/2c261430a0e744051a9cf64af320b1891.gif)
![緩存技術(shù)對比分析_第2頁](http://file4.renrendoc.com/view/2c261430a0e744051a9cf64af320b189/2c261430a0e744051a9cf64af320b1892.gif)
![緩存技術(shù)對比分析_第3頁](http://file4.renrendoc.com/view/2c261430a0e744051a9cf64af320b189/2c261430a0e744051a9cf64af320b1893.gif)
![緩存技術(shù)對比分析_第4頁](http://file4.renrendoc.com/view/2c261430a0e744051a9cf64af320b189/2c261430a0e744051a9cf64af320b1894.gif)
![緩存技術(shù)對比分析_第5頁](http://file4.renrendoc.com/view/2c261430a0e744051a9cf64af320b189/2c261430a0e744051a9cf64af320b1895.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
緩存技術(shù)對比分析第一頁,共三十八頁,編輯于2023年,星期五緩存是什么,解決什么問題?Cache是高速緩沖存儲器一種特殊的存儲器子系統(tǒng),其中復(fù)制了頻繁使用的數(shù)據(jù)以利于快速訪問凡是位于速度相差較大的兩種硬件/軟件之間的,用于協(xié)調(diào)兩者數(shù)據(jù)傳輸速度差異的結(jié)構(gòu),均可稱之為Cache第二頁,共三十八頁,編輯于2023年,星期五基于Web應(yīng)用的系統(tǒng)架構(gòu)圖數(shù)據(jù)庫應(yīng)用服務(wù)器Web服務(wù)器存儲設(shè)備瀏覽器Web應(yīng)用架構(gòu)操作系統(tǒng)的文件系統(tǒng)第三頁,共三十八頁,編輯于2023年,星期五Web應(yīng)用系統(tǒng)存在哪些速度差異?讀取文件系統(tǒng)讀取磁盤讀取數(shù)據(jù)庫內(nèi)存讀取文件系統(tǒng)讀取應(yīng)用內(nèi)存訪問數(shù)據(jù)庫服務(wù)器讀取靜態(tài)文件訪問應(yīng)用服務(wù)器讀取瀏覽器緩存訪問網(wǎng)站第四頁,共三十八頁,編輯于2023年,星期五緩存技術(shù)分類操作系統(tǒng)磁盤緩存減少磁盤機械操作數(shù)據(jù)庫緩存減少文件系統(tǒng)I/O應(yīng)用程序緩存減少對數(shù)據(jù)庫的查詢Web服務(wù)器緩存減少應(yīng)用服務(wù)器請求客戶端瀏覽器緩存減少對網(wǎng)站的訪問第五頁,共三十八頁,編輯于2023年,星期五操作系統(tǒng)緩存概述文件系統(tǒng)提供的DiskCache:操作系統(tǒng)會把經(jīng)常訪問到的文件內(nèi)容放入到內(nèi)存當中,由文件系統(tǒng)來管理當應(yīng)用程序通過文件系統(tǒng)訪問磁盤文件的時候,操作系統(tǒng)從DiskCache當中讀取文件內(nèi)容,加速了文件讀取速度DiskCache由操作系統(tǒng)來自動管理,一般不用人工干預(yù),但應(yīng)當保證物理內(nèi)存充足,以便于操作系統(tǒng)可以使用盡量多的內(nèi)存充當DiskCache,加速文件讀取速度特殊的應(yīng)用程序?qū)ξ募到y(tǒng)DiskCache有很高的要求,會繞開文件系統(tǒng)DiskCache,直接訪問磁盤分區(qū),自己實現(xiàn)DiskCache策略
Oracle的rawdevice(裸設(shè)備)–直接拋棄文件系統(tǒng)
MySQL的InnoDB:innodb_flush_method=O_DIRECT第六頁,共三十八頁,編輯于2023年,星期五Windows的DiskCache第七頁,共三十八頁,編輯于2023年,星期五Linux的DiskCache第八頁,共三十八頁,編輯于2023年,星期五數(shù)據(jù)庫緩存的重要性為什么數(shù)據(jù)庫非常依賴緩存?數(shù)據(jù)庫通常是企業(yè)應(yīng)用系統(tǒng)最核心的部分數(shù)據(jù)庫保存的數(shù)據(jù)量通常非常龐大數(shù)據(jù)庫查詢操作通常很頻繁,有時還很復(fù)雜以上原因造成數(shù)據(jù)庫查詢會引起非常頻繁的磁盤I/O讀取操作,迫使CPU掛起等待,數(shù)據(jù)庫性能極度低下數(shù)據(jù)庫有哪些緩存策略?
QueryCacheDataBuffer第九頁,共三十八頁,編輯于2023年,星期五QueryCache以SQL作為key值緩存查詢結(jié)果集一旦查詢涉及的表記錄被修改,緩存就會被自動刪除設(shè)置合適的QueryCache會極大提高數(shù)據(jù)庫性能QueryCache并非越大越好,過大的QqueryCache會浪費內(nèi)存。MySQL:query_cache_size=128M第十頁,共三十八頁,編輯于2023年,星期五MySQLQueryCache監(jiān)控工具showstatuslike'Qcache%';mysqlreport腳本MySQLAdministrator第十一頁,共三十八頁,編輯于2023年,星期五QueryCache狀態(tài)示例__QueryCache______________________________________________Memoryusage25.77Mof64.00M%Used:40.26BlockFragmnt24.73%Hits6.98M3.2/sInserts100.87M46.9/sInsrt:Prune34.15:145.5/sHit:Insert0.07:1第十二頁,共三十八頁,編輯于2023年,星期五DataBufferdatabuffer是數(shù)據(jù)庫數(shù)據(jù)在內(nèi)存中的容器databuffer的命中率直接決定了數(shù)據(jù)庫的性能databuffer越大越好,多多益善MySQL的InnoDBbuffer:innodb_buffer_pool_size=2GMySQL建議bufferpool開大到服務(wù)器物理內(nèi)存60-80%第十三頁,共三十八頁,編輯于2023年,星期五MySQLbuffer監(jiān)控工具showinnodbstatus\Gshowstatuslike'innodb%';mysqlreport腳本innotop第十四頁,共三十八頁,編輯于2023年,星期五InnoDBbuffer狀態(tài)示例__InnoDBBufferPool______________________________________Usage1000.00of1000.00%Used:100.00Readhit99.99%PagesFree0%Total:0.00Data59.69k93.26%Drty:0.02Misc43116.74Latched00.00Reads60.30G28.0k/sFromfile7.01M3.3/s0.01AheadRnd986840.0/sAheadSql95480.0/sWrites86.79M40.3/sFlushes14.08M6.5/sWaitFree00/s第十五頁,共三十八頁,編輯于2023年,星期五應(yīng)用程序緩存概述對象緩存查詢緩存頁面緩存動態(tài)頁面靜態(tài)化
Servlet緩存頁面內(nèi)部緩存第十六頁,共三十八頁,編輯于2023年,星期五對象緩存由O/RMapping框架例如Hibernate提供,透明性訪問,細顆粒度緩存數(shù)據(jù)庫查詢結(jié)果,無需業(yè)務(wù)代碼顯式編程,是最省事的緩存策略當軟件結(jié)構(gòu)按照O/RMapping框架的要求進行針對性設(shè)計,使用對象緩存將會極大降低Web系統(tǒng)對于數(shù)據(jù)庫的訪問請求良好的設(shè)計數(shù)據(jù)庫結(jié)構(gòu)和利用對象緩存,能夠提供極高的性能,對象緩存適合OLTP(聯(lián)機事務(wù)處理)應(yīng)用第十七頁,共三十八頁,編輯于2023年,星期五對象緩存分類對映射數(shù)據(jù)庫表記錄的entity對象進行緩存對1對n關(guān)系的集合進行緩存對n對1關(guān)系的關(guān)聯(lián)對象進行緩存第十八頁,共三十八頁,編輯于2023年,星期五Hibernate對象緩存配置@Entity@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)publicclassForest{...}配置entity對象緩存配置關(guān)聯(lián)集合的緩存@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)@JoinColumn(name="CUST_ID")@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)publicSortedSet<Ticket>getTickets(){returntickets;}僅僅添加Annotation就可以了,無須編碼,即可自動享受對象緩存。Hibernate會攔截對象的CRUD操作,針對對象讀取操作進行緩存,針對對象修改操作自動清理緩存第十九頁,共三十八頁,編輯于2023年,星期五Hibernate二級緩存是提升web應(yīng)用性能的法寶OLTP類型的web應(yīng)用,由于應(yīng)用服務(wù)器端可以進行群集水平擴展,最終的系統(tǒng)瓶頸總是逃不開數(shù)據(jù)庫訪問;哪個框架能夠最大限度減少數(shù)據(jù)庫訪問,降低數(shù)據(jù)庫訪問壓力,哪個框架提供的性能就更高;針對數(shù)據(jù)庫的緩存策略:對象緩存:細顆粒度,針對表的記錄級別,透明化訪問,在不改變程序代碼的情況下可以極大提升web應(yīng)用的性能。對象緩存是ORM的制勝法寶。對象緩存的優(yōu)劣取決于框架實現(xiàn)的水平,Hibernate是目前已知對象緩存最強大的開源ORM查詢緩存:粗顆粒度,針對查詢結(jié)果集,應(yīng)用于數(shù)據(jù)實時化要求不高的場合第二十頁,共三十八頁,編輯于2023年,星期五查詢緩存對數(shù)據(jù)庫查詢結(jié)果集進行緩存,類似數(shù)據(jù)庫的QueryCache適用于一些耗時,但是時效性要求比較低的場景。查詢緩存和對象緩存適用的場景不一樣,是互為補充的當查詢結(jié)果集涉及的表記錄被修改以后,需要注意清理緩存第二十一頁,共三十八頁,編輯于2023年,星期五Hibernate查詢緩存在配置文件中打開QueryCachehibernate.cache.use_query_cachetrue在查詢的時候顯式編碼使用CacheListblogs=sess.createQuery("fromBlogblogwhereblog.blogger=:blogger").setEntity("blogger",blogger).setMaxResults(15).setCacheable(true).setCacheRegion("frontpages").list();第二十二頁,共三十八頁,編輯于2023年,星期五Hibernate查詢緩存特征并非緩存整個查詢結(jié)果集,而是緩存查詢結(jié)果集entity對象的id集合
[blogId1,blogId2,blogId3,…]
在遍歷結(jié)果集的時候,再按照blogId去查詢blog對象,例如selectblog.*fromblogwhereid=?
如果此時blog配置了對象緩存,則自動讀取對象緩存Hibernate查詢緩存會自動清理過期緩存一旦結(jié)果集涉及的entity被修改,查詢緩存就被自動清理第二十三頁,共三十八頁,編輯于2023年,星期五頁面緩存頁面緩存的作用是什么?針對頁面的緩存技術(shù)不但可以減輕數(shù)據(jù)庫服務(wù)器壓力,還可以減輕應(yīng)用服務(wù)器壓力好的頁面緩存可以極大提高頁面渲染速度頁面緩存的難點在于如何清理過期的緩存頁面緩存技術(shù)有哪些?動態(tài)頁面靜態(tài)化
Servlet緩存頁面局部緩存第二十四頁,共三十八頁,編輯于2023年,星期五動態(tài)頁面靜態(tài)化利用模板技術(shù)將訪問過一次的動態(tài)頁面生成靜態(tài)html,同時修改頁面鏈接,下一次請求直接訪問靜態(tài)鏈接頁面動態(tài)頁面靜態(tài)化技術(shù)的廣泛應(yīng)用于互聯(lián)網(wǎng)CMS/新聞類Web應(yīng)用,但也有BBS應(yīng)用使用該技術(shù),例如Discuz!無法進行權(quán)限驗證,無法顯示個性化信息可以使用AJAX請求彌補動態(tài)頁面靜態(tài)化的某些缺點第二十五頁,共三十八頁,編輯于2023年,星期五Servlet緩存針對URL訪問返回的頁面結(jié)果進行緩存,適用于粗粒度的頁面緩存,例如新聞發(fā)布可以進行權(quán)限的檢查OScache提供了簡單的Servlet緩存(通過web.xml中的配置)也可以自己編程實現(xiàn)Servlet緩存第二十六頁,共三十八頁,編輯于2023年,星期五OSCacheServlet緩存示例<filter><filter-name>CacheFilter</filter-name><filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class><init-param><param-name>time</param-name><param-value>600</param-value></init-param><init-param><param-name>scope</param-name><param-value>session</param-value></init-param></filter><filter-mapping><filter-name>CacheFilter</filter-name><url-pattern>/news/*</url-pattern></filter-mapping>第二十七頁,共三十八頁,編輯于2023年,星期五頁面局部緩存針對動態(tài)頁面的局部片斷內(nèi)容進行緩存,適用于一些個性化但不經(jīng)常更新的頁面(例如博客)OSCache提供了簡單的頁面緩存可以自行擴展JSPTag實現(xiàn)頁面局部緩存第二十八頁,共三十八頁,編輯于2023年,星期五OSCache的頁面局部緩存<%@tagliburi="/oscache"prefix="cache"%><cache:cache>...somejspcontent...</cache:cache><cache:cachekey="foobar"scope="session">...somejspcontent...</cache:cache><cache:cachekey="<%=product.getId()%>"time="1800"refresh="<%=needRefresh%>">...somejspcontent...</cache:cache><cache:cachekey="<%=product.getId()%>"cron="02***"refresh="<%=needRefresh%>">...somejspcontent...</cache:cache>第二十九頁,共三十八頁,編輯于2023年,星期五應(yīng)用緩存的緩存服務(wù)器EHCache
適合充當對象緩存和Hibernate集成效果很好,GavinKing也是EHCache作者之一
OSCache
充當Servlet和頁面緩存在一個Web應(yīng)用當中可以同時使用OSCache和EHCacheJBossCache
在Java群集環(huán)境下使用支持緩存在節(jié)點之間的復(fù)制,在JBossAS上被用來實現(xiàn)HTTPSession的內(nèi)存復(fù)制功能第三十頁,共三十八頁,編輯于2023年,星期五非Java實現(xiàn)的通用緩存產(chǎn)品Memcached
在大規(guī)?;ヂ?lián)網(wǎng)應(yīng)用下使用每秒支撐1.5萬~2萬次請求
TokyoTyrant
兼容memcached協(xié)議,可以持久化存儲支持故障切換,對緩存服務(wù)器有高可靠性要求可以使用每秒支撐0.5萬~0.8萬次請求第三十一頁,共三十八頁,編輯于2023年,星期五Web服務(wù)器端緩存技術(shù)基于代理服務(wù)器模式的Web服務(wù)器端緩存
squid/nginxWeb服務(wù)器緩存技術(shù)被用來實現(xiàn)CDN(內(nèi)容分發(fā)網(wǎng)絡(luò)contentdeliverynetwork)被國內(nèi)主流門戶網(wǎng)站大量采用不需要編程,但僅限于新聞發(fā)布類網(wǎng)站,頁面實時性要求不高第三十二頁,共三十八頁,編輯于2023年,星期五基于AJAX技術(shù)的瀏覽器緩存使用AJAX調(diào)用的時候,將數(shù)據(jù)庫在瀏覽器端緩存只要不離開當前頁面,不刷新當前頁面,就可以直接讀取緩存數(shù)據(jù)只適用于使用AJAX技術(shù)的頁面第三十三頁,共三十八頁,編輯于2023年,星期五1.<scriptsrc="jQuery.js"></script>2.<scriptlanguage="JavaScript">3.<!--4.functiongopage(option,obj){5.varpage=$("#page").html()*1;6.obj.disabled=true;7.if(option=='+'){8.page++;9.varurl="data.php?page="+page+"&r="+Math.random();10.//獲取ajaxurl,后面的random是為了防止瀏覽器緩存xml內(nèi)容11.}else{12.;13.if(page<1)page=1;14.varurl="data.php?page="+page+"&r="+Math.random();15.16.}17.$("#data").html("loading...");//設(shè)置loading狀態(tài)18.$("#page").html(page);19.//下面是ajax處理20.$("#data").load(url,21.{limit:25},22.function(){obj.disabled=false;}23.);24.25.}26.//-->27.</script>28.<inputvalue="<"onclick="gopage('-',this)"type="button">29.<inputvalue=">"onclick="gopage('+',this)"type="button">30.page:<spanid="page">1</span>31.<divstyle="border:2pxsolidred;padding:2px;"id="data">dataarea</div>未使用AJAX緩存代碼第三十四頁,共三十八頁,編輯于2023年,星期五#<scriptlanguage="JavaScript">#<!--#varcache_data=newArray();//定義全局變量用來保存緩存數(shù)據(jù)#functiongopageCache(option,obj){#varpage=$("#page2").html()*1;#if(option=='+'){#page++;#varurl="data.php?page="+page+"&r="+Math.random();#}else{#;#if(page<1)page=1;#varurl="data.php?page="+page+"&r="+Math.random();##}#/*下面是緩存增加的部分*/#if((cache_data[page]!=null)&&(cache_data[page].length>1)){#//如果緩存存在,則直接調(diào)用緩存數(shù)據(jù),不用再去服務(wù)器進行數(shù)據(jù)請求#alert('cachehit');#$("#data2").html(cache_data[page]);#$("#page2").html(page);#returntrue;#}#$("#page2").html(page);#obj.disabled=true;#$("#data2").html("loading(cacheenabled)...");#$("#data2").load(url,#{limit:25},#function(responseText){obj.disabled=false;#cache_data[page]=responseText;//將當前的數(shù)據(jù)存入到內(nèi)存(緩存變量)中}#);##}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)民貸款申請書
- 轉(zhuǎn)正申請書問題
- 大學(xué)成績復(fù)查申請書
- 離婚申請書范本
- 農(nóng)村飲水困難申請書
- 礦單位調(diào)動單位申請書
- 財產(chǎn)執(zhí)行申請書
- 2024-2025版高中歷史第三單元近代西方資本主義政治制度的確立與發(fā)展8美國聯(lián)邦政府的建立練習(xí)含解析新人教版必修1
- 施工員轉(zhuǎn)正申請書
- 2024-2025學(xué)年高中地理第一章環(huán)境與環(huán)境問題第一節(jié)我們周圍的環(huán)境教案含解析新人教版選修6
- 《Python程序設(shè)計基礎(chǔ)教程(微課版)》全套教學(xué)課件
- 監(jiān)理專題安全例會紀要(3篇)
- GB/T 17374-2024食用植物油銷售包裝
- 高級煙草制品購銷員(三級)職業(yè)資格鑒定理論考試題及答案
- 河道清淤疏浚投標方案(技術(shù)方案)
- 護理部工作總結(jié)
- 2017年湖北省黃岡市中考語文(有解析)
- 幼兒園數(shù)學(xué)《比較物體的大小》課件
- 中國水利水電第十二工程局有限公司招聘筆試真題2023
- DB37-T3953-2020醫(yī)療衛(wèi)生機構(gòu)安全風(fēng)險分級管控體系實施指南
- 工業(yè)機器人系統(tǒng)運維員(中級)課件全套 宋永昌 項目1-3 機械系統(tǒng)檢查與診斷-工業(yè)機器人運行維護與保養(yǎng)
評論
0/150
提交評論