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