真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Cache和Buffer的區(qū)別是什么

這篇文章主要為大家分析了Cache 和 Buffer 的區(qū)別是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“Cache 和 Buffer 的區(qū)別是什么”的知識(shí)吧。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的翠屏網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Cache和Buffer是兩個(gè)不同的概念,簡(jiǎn)單的說(shuō),Cache是加速“讀”,而buffer是緩沖“寫(xiě)”,前者解決讀的問(wèn)題,保存從磁盤上讀出的數(shù)據(jù),后者是解決寫(xiě)的問(wèn)題,保存即將要寫(xiě)入到磁盤上的數(shù)據(jù)。在很多情況下,這兩個(gè)名詞并沒(méi)有嚴(yán)格區(qū)分,常常把讀寫(xiě)混合類型稱為buffer cache,本文后續(xù)的論述中,統(tǒng)一稱為cache。

Oracle中的log buffer是解決redo寫(xiě)入的問(wèn)題,而data buffer cache則解決data block的讀寫(xiě)問(wèn)題。對(duì)于Oracle來(lái)說(shuō),如果IO沒(méi)有在SGA中命中,都會(huì)發(fā)生物理IO,Oracle并不關(guān)心底層存儲(chǔ)的類型,可能是一套存儲(chǔ)系統(tǒng),可能是本地磁盤,可能是RAID 10,也可能是RAID 5,可能是文件系統(tǒng),也可能是裸設(shè)備,或是ASM??傊?,Oracle把底層的存儲(chǔ)系統(tǒng)稱為存儲(chǔ)子系統(tǒng)。

在存儲(chǔ)系統(tǒng)中,cache幾乎無(wú)處不在(在后面的論述中,我們統(tǒng)稱為cache),文件系統(tǒng)有cache,存儲(chǔ)有cache,RAID控制器上有cache,磁盤上也有cache。為了提高性能,Oracle的一個(gè)寫(xiě)操作,很有可能寫(xiě)在存儲(chǔ)的cache上就返回了,如果這時(shí)存儲(chǔ)系統(tǒng)發(fā)生問(wèn)題,Oracle如何來(lái)保證數(shù)據(jù)一致性的問(wèn)題。

Oracle數(shù)據(jù)庫(kù)最重要的特性是:Write ahead logging,在data block在寫(xiě)入前,必須保證首先寫(xiě)入redo log,在事務(wù)commit時(shí),同時(shí)必須保證redo log被寫(xiě)入。Oracle為了保證數(shù)據(jù)的一致性,對(duì)于redo log采用了direct IO,Direct IO會(huì)跳過(guò)了OS上文件系統(tǒng)的cache這一層。但是,OS管不了存儲(chǔ)這一層,雖然跳過(guò)了文件系統(tǒng)的cache,但是依然可能寫(xiě)在存儲(chǔ)的cache上。

一般的存儲(chǔ)都有cache,為了提高性能,寫(xiě)操作在cache上完成就返回給OS了,我們稱這種寫(xiě)操作為write back,為了保證掉電時(shí)cache中的內(nèi)容不會(huì)丟失,存儲(chǔ)都有電池保護(hù),這些電池可以供存儲(chǔ)在掉電后工作一定時(shí)間,保證cache中的數(shù)據(jù)被刷入磁盤,不會(huì)丟失。不同于UPS,電池能夠支撐的時(shí)間很短,一般都在30分鐘以內(nèi),只要保證cache中的數(shù)據(jù)被寫(xiě)入就可以了。存儲(chǔ)可以關(guān)閉寫(xiě)cache,這時(shí)所有的寫(xiě)操作必須寫(xiě)入到磁盤才返回,我們稱這種寫(xiě)操作為write throuogh,當(dāng)存儲(chǔ)發(fā)現(xiàn)某些部件不正常時(shí),存儲(chǔ)會(huì)自動(dòng)關(guān)閉寫(xiě)cache,這時(shí)寫(xiě)性能會(huì)下降。

RAID卡上也有cache,一般是256M,同樣是通過(guò)電池來(lái)保護(hù)的,不同于存儲(chǔ)的是,這個(gè)電池并不保證數(shù)據(jù)可以被寫(xiě)入到磁盤上,而是為cache供電以保護(hù)數(shù)據(jù)不丟失,一般可以支撐幾天的時(shí)間。還有些RAID卡上有flash cache,掉電后可以將cache中的內(nèi)容寫(xiě)入到flash cache中,保證數(shù)據(jù)不丟失。如果你的數(shù)據(jù)庫(kù)沒(méi)有存儲(chǔ),而是放在普通PC機(jī)的本地硬盤之上的,一定要確認(rèn)主機(jī)中的RAID卡是否有電池,很多硬件提供商默認(rèn)是不配置電池的。當(dāng)然,RAID卡上的cache同樣可以選擇關(guān)閉。

磁盤上的cache,一般是16M-64M,很多存儲(chǔ)廠商都明確表示,存儲(chǔ)中磁盤的cache是禁用的,這也是可以理解的,為了保證數(shù)據(jù)可靠性,而存儲(chǔ)本身又提供了非常大的cache,相比較而言,磁盤上的cache就不再那么重要。SCSI指令中有一個(gè)FUA(Force Unit Access)的參數(shù),設(shè)置這個(gè)參數(shù)時(shí),寫(xiě)操作必須在磁盤上完成才可以返回,相當(dāng)于禁用了磁盤的寫(xiě)cache。雖然沒(méi)有查證到資料,但是我個(gè)人認(rèn)為一旦磁盤被接入到RAID控制器中,寫(xiě)cache就會(huì)被禁用,這也是為了數(shù)據(jù)可靠性的考慮,我相信存儲(chǔ)廠商應(yīng)該會(huì)考慮這個(gè)問(wèn)題。

至此,我們可以看到Oracle的一個(gè)物理IO是經(jīng)歷了一系列的cache之后,最終被寫(xiě)入到磁盤上。cache雖然可以提高性能,但是也要考慮掉電保護(hù)的問(wèn)題。關(guān)于數(shù)據(jù)的一致性,是由Oracle數(shù)據(jù)庫(kù),操作系統(tǒng)和存儲(chǔ)子系統(tǒng)共同來(lái)保證的。

關(guān)于“Cache 和 Buffer 的區(qū)別是什么”就介紹到這了,更多相關(guān)內(nèi)容可以搜索創(chuàng)新互聯(lián)以前的文章,希望能夠幫助大家答疑解惑,請(qǐng)多多支持創(chuàng)新互聯(lián)網(wǎng)站!


分享文章:Cache和Buffer的區(qū)別是什么
文章路徑:http://weahome.cn/article/pgpjdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部