更新時間:2022-03-29 12:06:35 來源:動力節(jié)點(diǎn) 瀏覽2503次
Java緩存技術(shù)是什么?很多小伙伴對此還不是很了解,下面就由小編來告訴大家。
(1)Cache是??高速緩存的特殊內(nèi)存子系統(tǒng),將常用的數(shù)據(jù)復(fù)制在其中,方便快速訪問。
(2)對于速度差異較大的兩種硬件/軟件,使用協(xié)調(diào)兩者數(shù)據(jù)傳輸速度差異的結(jié)構(gòu),可以稱為Cache.
不同層次的系統(tǒng)架構(gòu)之間,為了加快訪問速度,可以有緩存
操作系統(tǒng)磁盤緩存 -> 減少磁盤機(jī)械操作
數(shù)據(jù)庫緩存 -> 減少文件系統(tǒng) I/O
應(yīng)用程序緩存 -> 減少對數(shù)據(jù)庫的查詢
Web 服務(wù)器緩存 -> 減少應(yīng)用程序服務(wù)器請求
客戶端瀏覽器緩存 -> 減少對網(wǎng)站的訪問
(1)文件系統(tǒng)提供的磁盤緩存:操作系統(tǒng)會將經(jīng)常訪問的文件內(nèi)容放入內(nèi)存,由文件系統(tǒng)管理。
(2)應(yīng)用程序通過文件系統(tǒng)訪問磁盤文件時,操作系統(tǒng)從Disk Cache中讀取文件內(nèi)容,加快了文件讀取速度。
(3)Disk Cache由操作系統(tǒng)自動管理,一般不需要人工干預(yù),但要保證足夠的物理內(nèi)存,讓操作系統(tǒng)盡可能多的使用Disk Cache,加快文件讀取速度
(4)特殊應(yīng)用對文件系統(tǒng)Disk Cache要求較高。他們會繞過文件系統(tǒng)Disk Cache,直接訪問磁盤分區(qū),自行實(shí)現(xiàn)Disk
(5)Cache策略。
Oracle的裸設(shè)備(raw device)——直接放棄文件系統(tǒng)
InnoDB for MySQL:innodb_flush_method = O_DIRECT
(1)重要性
數(shù)據(jù)庫通常是企業(yè)應(yīng)用系統(tǒng)的核心部分
數(shù)據(jù)庫中存儲的數(shù)據(jù)量通常非常大
數(shù)據(jù)庫查詢操作通常非常頻繁,有時也很復(fù)雜
以上原因?qū)е聰?shù)據(jù)庫查詢導(dǎo)致非常頻繁的磁盤I/O讀操作,迫使CPU掛機(jī)等待,數(shù)據(jù)庫性能極低
(2)緩存策略
1)查詢緩存
以 SQL 為鍵值緩存查詢結(jié)果集
一旦查詢涉及的表記錄被修改,緩存將被自動刪除
設(shè)置合適的 Query Cache 將大大提高數(shù)據(jù)庫性能
Query Cache 盡量不要大,Qquery Cache 太大會浪費(fèi)內(nèi)存。
MySQL:query_cache_size=128M
2)數(shù)據(jù)緩沖區(qū)
數(shù)據(jù)緩沖區(qū)是數(shù)據(jù)庫數(shù)據(jù)在內(nèi)存中的容器
數(shù)據(jù)緩沖區(qū)的命中率直接決定了數(shù)據(jù)庫的性能
數(shù)據(jù)緩沖區(qū)越大越好,越多越好
MySQL InnoDB 緩沖區(qū):innodb_buffer_pool_size = 2G
MySQL 建議將緩沖池擴(kuò)大到服務(wù)器物理內(nèi)存的 60-80%
(1)對象緩存
由Hibernate等O/R Mapping框架提供,透明訪問,對數(shù)據(jù)庫查詢結(jié)果進(jìn)行細(xì)粒度緩存,無需對業(yè)務(wù)代碼進(jìn)行顯式編程,是最省事的緩存策略
當(dāng)軟件結(jié)構(gòu)按照O/R Mapping框架的要求設(shè)計時,對象緩存的使用將大大減少Web系統(tǒng)的數(shù)據(jù)庫訪問請求
精心設(shè)計的數(shù)據(jù)庫結(jié)構(gòu)和對象緩存的使用可以提供極高的性能。對象緩存適用于OLTP(在線事務(wù)處理)應(yīng)用
(2)查詢緩存
緩存數(shù)據(jù)庫查詢結(jié)果集,類似于數(shù)據(jù)庫的Query Cache
適用于一些耗時但時效性不高的要求。查詢緩存和對象緩存適用于不同的場景,相輔相成
當(dāng)查詢結(jié)果集中涉及的表記錄被修改時,需要注意清除緩存
(3)頁面緩存功能
頁面緩存技術(shù)不僅可以減輕數(shù)據(jù)庫服務(wù)器的壓力,還可以減輕應(yīng)用服務(wù)器的壓力
好的頁面緩存可以大大提高頁面渲染速度
頁面緩存的難點(diǎn)在于如何清理過期緩存
基于代理服務(wù)器模式的Web服務(wù)器端緩存,如squid/nginx
Web服務(wù)器緩存技術(shù)用于實(shí)現(xiàn)CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))
國內(nèi)主流門戶大量采用
無需編程,但僅限于新聞發(fā)布網(wǎng)站,頁面實(shí)時性要求不高
使用AJAX調(diào)用時,在瀏覽器端緩存數(shù)據(jù)庫
只要不離開當(dāng)前頁面或不刷新當(dāng)前頁面,就可以直接讀取緩存數(shù)據(jù)
僅適用于使用AJAX技術(shù)的頁面
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743