成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳述數(shù)據(jù)庫系統(tǒng)中的緩存——Cache

數(shù)據(jù)庫
數(shù)據(jù)庫系統(tǒng)中的緩存Cache是個相對獨立的概念,很多人把它與Buffer混淆。這里我們?yōu)榇蠹以斒鍪裁词荂ache。

談到Cache緩存,51CTO數(shù)據(jù)庫頻道之前也曾出過專題《MySQL內(nèi)存管理:緩存的藝術(shù)》,向您推薦。

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

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

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

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

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

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

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

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

原文鏈接:http://www.hellodba.net/2010/08/db-storage.html

【編輯推薦】

  1. Oracle緩存表學(xué)習(xí)筆記講解
  2. MySQL內(nèi)存管理:緩存的藝術(shù)
  3. SQL Server加密的實際操作步驟
  4. SQL Server 2005模糊查找包的最簡單模式
  5. SQL Server 添加數(shù)據(jù)庫的操作方案
責(zé)任編輯:彭凡 來源: HelloDBA
相關(guān)推薦

2022-04-05 13:46:21

日志數(shù)據(jù)庫系統(tǒng)

2011-04-13 15:07:30

數(shù)據(jù)庫系統(tǒng)設(shè)計

2011-04-13 15:25:12

數(shù)據(jù)庫系統(tǒng)設(shè)計

2023-12-20 16:12:37

數(shù)據(jù)庫復(fù)制延遲

2010-04-14 08:49:43

Oracle數(shù)據(jù)庫系統(tǒng)

2011-02-25 13:49:12

2011-02-28 17:12:20

Oracle數(shù)據(jù)庫

2011-04-13 15:17:09

數(shù)據(jù)庫系統(tǒng)設(shè)計

2011-06-07 17:01:44

2019-03-01 18:27:09

MySQL安裝數(shù)據(jù)庫

2010-04-22 11:34:21

Oracle數(shù)據(jù)庫

2011-07-26 14:56:03

數(shù)據(jù)庫發(fā)展

2011-05-12 13:03:36

WP7數(shù)據(jù)庫選擇

2011-05-12 13:42:04

Windows PhoWindows Pho

2010-07-11 18:42:17

CassandraTwitter

2011-05-24 09:45:41

Oracle數(shù)據(jù)庫系統(tǒng)調(diào)優(yōu)

2010-09-17 20:09:25

2010-04-12 14:55:26

Oracle數(shù)據(jù)庫

2010-04-22 12:49:34

負(fù)載均衡功能配置

2011-03-24 15:52:18

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美久久久久 | 午夜一区二区三区在线观看 | 色综合网站 | 国产一在线观看 | 久久亚洲国产精品日日av夜夜 | www.日本在线观看 | 日韩毛片 | 成人在线精品视频 | 亚洲欧美视频 | 亚洲一区视频在线 | 一区二区三区影院 | 国产视频一区二区三区四区五区 | 国产精品自产拍在线观看蜜 | 蜜桃精品噜噜噜成人av | 午夜影院 | 在线婷婷| 亚洲综合一区二区三区 | 一级免费毛片 | 亚洲网站在线 | 精品国产一区二区三区久久久蜜月 | 欧美一区二区免费电影 | 激情综合五月天 | 国产高清不卡 | 成人网在线观看 | 欧美日韩电影一区 | 精品日韩| 伊人网综合 | 午夜精品一区二区三区在线观看 | 国产区高清 | 成人午夜网 | 亚洲人在线播放 | 国产乱码精品一区二区三区中文 | 日本三级网址 | 久久国产亚洲 | 黄网站色大毛片 | 国产高清视频在线观看 | 黄色国产在线播放 | 国产激情偷乱视频一区二区三区 | 久久成人一区 | 国产一区二区三区四区三区四 | www.av在线|