1樓:公羊奕琛法儀
cache
:即高速緩衝儲存器,是位於cpu與主記憶體間的一種容量較小但速度很高的儲存器。由於cpu的速度遠高於主記憶體,cpu直接從記憶體中存取資料要等待一定時間週期,cache中儲存著cpu剛用過或迴圈使用的一部分資料,當cpu再次使用該部分資料時可從cache中直接呼叫,這樣就減少了cpu的等待時間,提高了系統的效率。
cache又分為一級cache(l1
cache)和二級cache(l2
cache),l1
cache整合在cpu內部,l2
cache早期一般是焊在主機板上,現在也都整合在cpu內部,常見的容量有256kb或512kb
l2cache。
一級快取裡面一般放著執行最頻繁的資料.
2樓:子車蘭英孝月
cpu快取(cache
memory)位於cpu與記憶體之間的臨時儲存器,它的容量比記憶體小但交換速度快。在快取中的資料是記憶體中的一小部分,但這一小部分是短時間內cpu即將訪問的,當cpu呼叫大量資料時,就可避開記憶體直接從快取中呼叫,從而加快讀取速度。由此可見,在cpu中加入快取是一種高效的解決方案,這樣整個記憶體儲器(快取+記憶體)就變成了既有快取的高速度,又有記憶體的大容量的儲存系統了。
快取對cpu的效能影響很大,主要是因為cpu的資料交換順序和cpu與快取間的頻寬引起的。
快取是為了解決cpu速度和記憶體速度的速度差異問題。記憶體中被cpu訪問最頻繁的資料和指令被複制入cpu中的快取,這樣cpu就可以不經常到象「蝸牛」一樣慢的記憶體中去取資料了,cpu只要到快取中去取就行了,而快取的速度要比記憶體快很多。
為了分清這兩個概念,我們先了解一下ram
。ram和rom相對的,ram是掉電以後,其中的資訊就消失那一種,rom在掉電以後資訊也不會消失那一種。
ram又分兩種,一種是靜態ram,sram;一種是動態ram,dram。前者的儲存速度要比後者快得多,我們現在使用的記憶體一般都是動態ram。
有的菜鳥就說了,為了增加系統的速度,把快取擴大不就行了嗎,擴大的越大,快取的資料越多,系統不就越快了嗎?快取通常都是靜態ram,速度是非常的快,
但是靜態ram整合度低(儲存相同的資料,靜態ram的體積是動態ram的6倍),
**高(同容量的靜態ram是動態ram的四倍),
由此可見,擴大靜態ram作為快取是一個非常愚蠢的行為,
但是為了提高系統的效能和速度,我們必須要擴大快取,
這樣就有了一個折中的方法,不擴大原來的靜態ram快取,而是增加一些高速動態ram做為快取,
這些高速動態ram速度要比常規動態ram快,但比原來的靜態ram快取慢,
我們把原來的靜態ram快取叫一級快取,而把後來增加的動態ram叫二級快取。
一級快取和二級快取中的內容都是記憶體中訪問頻率高的資料的複製品(對映),它們的存在都是為了減少高速cpu對慢速記憶體的訪問。
通常cpu找資料或指令的順序是:先到一級快取中找,找不到再到二級快取中找,如果還找不到就只有到記憶體中找了。
3樓:榮起雲睢嬋
一級快取是cpu指令集的儲存空間,二級快取是cpu和記憶體之間通訊的一箇中間環節,速度處於cpu和記憶體之間
4樓:韓望亭咎嫻
一級快取是cpu儲存最常用的資訊的儲存器
二級緩比一級低一級
等級越高,速度越快,但容量越小(造價貴)
spring一級快取和二級快取的區別是什麼?
5樓:匿名使用者
一級快取:
就是session級別的快取。一個session做了一個查詢操作,它會把這個操作的結果放在一級快取中。
如果短時間內這個session(一定要同一個session)又做了同一個操作,那麼hibernate直接從一級快取中拿,而不會再去連資料庫,取資料。
它是內建的事務範圍的快取,不能被解除安裝。
二級快取:
就是sessionfactory級別的快取。顧名思義,就是查詢的時候會把查詢結果快取到二級快取中。
如果同一個sessionfactory建立的某個session執行了相同的操作,hibernate就會從二級快取中拿結果,而不會再去連線資料庫。
這是可選的外掛式的快取,在預設情況下,sessionfactory不會啟用這個外掛。
可以在每個類或每個集合的粒度上配置。快取介面卡用於把具體的快取實現軟體與hibernate整合。
嚴格意義上說,sessionfactory快取分為兩類:內建快取和外接快取。我們通常意義上說的二級快取是指外接快取。
內建快取與session級別快取實現方式相似。前者是sessionfactory物件的一些集合屬性包含的資料,後者是指session的一些集合屬性包含的資料
sessionfactory的內建快取中存放了對映後設資料和預定義sql語句。
對映後設資料是對映檔案中資料的拷貝;
而預定義sql語句是在hibernate初始化階段根據對映後設資料推匯出來。
sessionfactory的內建快取是隻讀的,應用程式不能修改快取中的對映後設資料和預定義sql語句,因此sessionfactory不需要進行內建快取與對映檔案的同步。
hibernate的這兩級快取都位於持久化層,存放的都是資料庫資料的拷貝。
快取的兩個特性:
快取的範圍
快取的併發訪問策略
1、快取的範圍
決定了快取的生命週期以及可以被誰訪問。快取的範圍分為三類。
事務範圍
程序範圍
叢集範圍
注:對大多數應用來說,應該慎重地考慮是否需要使用叢集範圍的快取,因為訪問的速度不一定會比直接訪問資料庫資料的速度快多少。
事務範圍的快取是持久化層的第一級快取,通常它是必需的;程序範圍或叢集範圍的快取是持久化層的第二級快取,通常是可選的。
2、快取的併發訪問策略
當多個併發的事務同時訪問持久化層的快取的相同資料時,會引起併發問題,必須採用必要的事務隔離措施。
在程序範圍或叢集範圍的快取,即第二級快取,會出現併發問題。
因此可以設定以下四種型別的併發訪問策略,每一種策略對應一種事務隔離級別。
事務型併發訪問策略是事務隔離級別最高,只讀型的隔離級別最低。事務隔離級別越高,併發效能就越低。
a 事務型:僅僅在受管理環境中適用。它提供了repeatable read事務隔離級別。
對於經常被讀但很少修改的資料,可以採用這種隔離型別,因為它可以防止髒讀和不可重複讀這類的併發問題。
b 讀寫型:提供了read committed事務隔離級別。僅僅在非叢集的環境中適用。
對於經常被讀但很少修改的資料,可以採用這種隔離型別,因為它可以防止髒讀這類的併發問題。
c 非嚴格讀寫型:不保證快取與資料庫中資料的一致性。
如果存在兩個事務同時訪問快取中相同資料的可能,必須為該資料配置一個很短的資料過期時間,從而儘量避免髒讀。
對於極少被修改,並且允許偶爾髒讀的資料,可以採用這種併發訪問策略。
d 只讀型:對於從來不會修改的資料,如參考資料,可以使用這種併發訪問策略。
什麼樣的資料適合存放到第二級快取中?
1、很少被修改的資料
2、不是很重要的資料,允許出現偶爾併發的資料
3、不會被併發訪問的資料
4、參考資料
不適合存放到第二級快取的資料?
1、經常被修改的資料
2、財務資料,絕對不允許出現併發
3、與其他應用共享的資料。
hibernate的二級快取策略的一般過程如下:
1) 條件查詢的時候,總是發出一條select * from table_name where …. (選擇所有欄位)這樣的sql語句查詢資料庫,一次獲得所有的資料物件。
2) 把獲得的所有資料物件根據id放入到第二級快取中。
3) 當hibernate根據id訪問資料物件的時候,首先從session一級快取中查;查不到,如果配置了二級快取,那麼從二級快取中查;查不到,再查詢資料庫,把結果按照id放入到快取。
4) 刪除、更新、增加資料的時候,同時更新快取。
注:hibernate的二級快取策略,是針對於id查詢的快取策略,對於條件查詢則毫無作用。為此,hibernate提供了針對條件查詢的query快取。
query快取策略的過程如下:
1) hibernate首先根據這些資訊組成一個query key,query key包括條件查詢的請求一般資訊:sql, sql需要的引數,記錄範圍(起始位置rowstart,最大記錄個數maxrows),等。
2) hibernate根據這個query key到query快取中查詢對應的結果列表。如果存在,那麼返回這個結果列表;如果不存在,查詢資料庫,獲取結果列表,把整個結果列表根據query key放入到query快取中。
3) query key中的sql涉及到一些表名,如果這些表的任何資料發生修改、刪除、增加等操作,這些相關的query key都要從快取中清空。
一級快取,二級快取是什麼意思?有什麼用?
cdn的一級快取,二級快取是什麼意思
6樓:
hibernate的快取包括session的快取和sessionfactory的快取,其中 sessionfactory的快取又可以分為兩類:內建快取和外接快取。session的緩 存是內建的,不能被解除安裝,也被稱為hibernate的第一級快取。
sessionfactory的內建快取和session的快取在實現方式上比較相似,前者是 sessionfactory物件的一些集合屬性包含的資料,後者是指session的一些集 合屬性包含的資料。sessionfactory的內建快取中存放了對映後設資料和預定義 sql語句,對映後設資料是對映檔案中資料的拷貝,而預定義sql語句是在 hibernate初始化階段根據對映後設資料推匯出來,sessionfactory的內建快取 是隻讀的,應用程式不能修改快取中的對映後設資料和預定義sql語句,因此 sessionfactory不需要進行內建快取與對映檔案的同步。sessionfactory的 外接快取是一個可配置的外掛。
在預設情況下,sessionfactory不會啟用這個 外掛。外接快取的資料是資料庫資料的拷貝,外接快取的介質可以是記憶體或者硬 盤。sessionfactory的外接快取也被稱為hibernate的第二級快取。
請問一級快取和二級快取,那個更「貼近」CPU呢?哪個成本更高呢
一級更貼近cpu cpu的指令是先通過各個核心傳到l1上再在l2 上組合的然後通過前端匯流排發出的。接受時翻過來就可以了 沒有什麼成本高不高是一樣的 由於構架的位子不同而不同的 所以無所謂成本高低的呵呵 樓上說的指令發出過程有問題 指令是直接送出的,無需通過快取,快取只用來讀指令 讀資料 寫資料。l...
匯流排頻率,二級快取,主頻怎麼樣才算是好,是不是越大越好,還
當然是越大越好,影響cpu效能的指標分別是架構 頻率 快取 前端匯流排。現在的cpu基本沒有前端匯流排這一概念了。因為amd的處理器早就把記憶體控制器整合在了cpu裡,intel的i系列也已整合了記憶體控制器。目前還存在前端匯流排這一概念的是intel的酷瑞系列。酷瑞系列是775的 i系列又分兩種。...
買膝上型電腦,二級快取是什麼意思?需要考慮嗎?一般多大
二級快取是整合在cpu內的高速儲存器 非常重要,越大越效能越好 買2m的,弟弟 膝上型電腦中的二級快取是什麼意思?什麼樣的更好些?這是cpu中的專業術語,舉個例子,伺服器上用的至強處理器和普通的p4處理器其核心基本上是一樣的,就是二級快取不同。至強的二級快取是2mb 16mb,p4的二級快取是512...