快取的簡要說明

2021-08-07 06:51:21 字數 4158 閱讀 6386

這幾天看了快取的知識,感覺沒什麼頭緒,不過還是整理了大概的學習思路,希望能幫助到大家。後續會出詳細的講解

一、什麼是快取1、

cache

是高速緩衝儲存器

一種特殊的儲存器子系統,其中複製了頻繁使用的資料以利於快速訪問

2、凡是位於速度相差較大的兩種硬體

/軟體之間的,用於協調兩者資料傳輸速度差異的結構,均可稱之為

cache

二、快取的分類

1、基於

web應用的系統架構圖

2、在系統架構的不同層級之間,為了加快訪問速度,都可以存在快取

·        

作業系統磁碟快取

->

減少磁碟機械操作

·        

資料庫快取

->

減少檔案系統

i/o

·        

應用程式快取

->

減少對資料庫的查詢

·        

web伺服器快取

->

減少應用伺服器請求

·        

客戶端瀏覽器快取

->

減少對**的訪問

三、作業系統快取

1、檔案系統提供的

disk cache

:作業系統會把經常訪問到的檔案內容放入到記憶體當中,由檔案系統來管理

2、當應用程式通過檔案系統訪問磁碟檔案的時候,作業系統從

disk cache

當中讀取檔案內容,加速了檔案讀取速度3、

disk cache

由作業系統來自動管理,一般不用人工干預,但應當保證物理記憶體充足,以便於作業系統可以使用盡量多的記憶體充當

disk cache

,加速檔案讀取速度

4、特殊的應用程式對檔案系統

disk cache

有很高的要求,會繞開檔案系統

disk cache

,直接訪問磁碟分割槽,自己實現

disk 5、

cache策略

·        

oracle

的raw device(

裸裝置) –

直接拋棄檔案系統

·        

mysql

的innodb

:innodb_flush_method = o_direct

四、資料庫快取

1、重要性

·        

資料庫通常是企業應用系統最核心的部分

·        

資料庫儲存的資料量通常非常龐大

·        

資料庫查詢操作通常很頻繁,有時還很複雜

·        

以上原因造成資料庫查詢會引起非常頻繁的磁碟

i/o讀取操作,迫使

cpu掛起等待,資料庫效能極度低下 2

、快取策略a、

query cache

o   

以sql

作為key

值快取查詢結果集

o   

一旦查詢涉及的表記錄被修改,快取就會被自動刪除

o   

設定合適的

query cache

會極大提高資料庫效能

o   

query cache

並非越大越好,過大的

qquery cache

會浪費記憶體。

o   

mysql: query_cache_size= 128m b

、data buffer

o   

data buffer

是資料庫資料在記憶體中的容器

o   

data buffer

的命中率直接決定了資料庫的效能

o   

data buffer

越大越好,多多益善

o   

mysql

的innodb buffer

:innodb_buffer_pool_size= 2g

o   

mysql

建議buffer pool

開大到伺服器物理記憶體

60-80%

五、應用程式快取

1、物件快取

·        

由框架例如

hibernate

提供,透明性訪問,細顆粒度快取資料庫查詢結果,無需業務**顯式程式設計,是最省事的快取策略

·        

當軟體結構按照

框架的要求進行針對性設計,使用物件快取將會極大降低

web系統對於資料庫的訪問請求

·        

良好的設計資料庫結構和利用物件快取,能夠提供極高的效能,物件快取適合

oltp

(聯機事務處理)應用 2

、查詢快取

·        

對資料庫查詢結果集進行快取,類似資料庫的

query cache

·        

適用於一些耗時,但是時效性要求比較低的場景。查詢快取和物件快取適用的場景不一樣,是互為補充的

·        

當查詢結果集涉及的表記錄被修改以後,需要注意清理快取 3

、頁面快取

a、作用

o   

針對頁面的快取技術不但可以減輕資料庫伺服器壓力,還可以減輕應用伺服器壓力

o   

好的頁面快取可以極大提高頁面渲染速度

o   

頁面快取的難點在於如何清理過期的快取 b

、分類i

、動態頁面靜態化

o   

利用模板技術將訪問過一次的動態頁面生成靜態

html

o   

動態頁面靜態化技術的廣泛應用於網際網路

cms/

新聞類web

應用,但也有

bbs應用使用該技術,例如

discuz!

o   

無法進行許可權驗證,無法顯示個性化資訊

o   

可以使用

ajax

請求彌補動態頁面靜態化的某些缺點 ii

、servlet快取

o   

針對url

訪問返回的頁面結果進行快取,適用於粗粒度的頁面快取,例如新聞發布

o   

可以進行許可權的檢查

o   

oscache

提供了簡單的

servlet快取(

通過web.xml

中的配置)

o   

也可以自己程式設計實現

servlet快取

iii、頁面內部快取

o   

針對動態頁面的區域性片斷內容進行快取,適用於一些個性化但不經常更新的頁面

(例如部落格)

o   

oscache

提供了簡單的頁面快取

o   

可以自行擴充套件

jsp tag

實現頁面區域性快取

六、

web伺服器端快取

·        

基於**伺服器模式的

web伺服器端快取,如

squid/nginx

·        

web伺服器快取技術被用來實現

cdn(內容分發網路

contentdelivery network)

·        

被國內主流門戶**大量採用

·        

不需要程式設計,但僅限於新聞發布類**,頁面實時性要求不高

七、基於

ajax

的瀏覽器快取

·        

使用ajax

呼叫的時候,將資料庫在瀏覽器端快取

·        

只要不離開當前頁面,不重新整理當前頁面,就可以直接讀取快取資料

·        

只適用於使用

ajax

技術的頁面

BCP簡要說明

bcp是sybase公司提供專門用於資料庫表一級資料備份的工具。一般存放在所安裝的ase或者open client 的bin目錄中。12版本以前的ase,bcp存放目錄為 sybase bin 12版本 含12版本 以後存放目錄為 sybase ocs 12 x bin 其中 sybase為syba...

initcall debug簡要說明

linux version 3.10.40 1.使用說明 documentation kernel parameters.txt中的說明如下 initcall debug knl trace initcalls as they are executed.useful for working out ...

ramoops pstore簡要說明

1.pstore pstore是persistent storage的縮寫。核心發生異常時如果能將日誌等資訊儲存下來不丟失,那麼就可以通過這些資訊來定位問題。不同的平台可以提供的儲存位置不同,例如有些平台支援硬碟,有些不支援。除了平台差異,異常型別也決定了在發生異常時該儲存位置是否還可用。pstor...