实战: 如何掌握Oracle和业务IO知识
作者?|?Hardy
來源 | 架構師技術聯盟
? ? ? 今天,筆者打算梳理下Oracle架構相關的知識,讓讀者快速全面掌握Oracle和大數據領域知識。
Oracle系統結構由內存結構、物理和邏輯結構等幾個部分組成。其中,與陣列密切相關的物理結構包括數據文件、控制文件、聯機重做日志文件和歸檔日志文件。如果是RAC集群,還包括Voting File和OCR。
? ? ??
OCR負責維護整個RAC和Clusterware資源的配置信息,包括的信息有節點成員、數據庫、實例、服務和應用程序等。
IO特征:RAC 啟動和停止時訪問,IO 大小為512B 和4KB,隨機讀寫。
? ? ? Voting Disk用于管理集群的節點成員身份,在出現“腦裂”時,仲裁哪個Partition獲得集群的控制權,其他Partition必須從集群中剔除。
IO特征:每一秒做一次IO 操作,數據塊大小為512B 和256KB,訪問位置固定。
? ? ? 數據文件是oracle存儲的物理結構,由多個操作系統文件組成,存儲了數據庫的所有數據(包含表、索引等)。
IO 特征:隨機讀寫,絕大多數數據塊的大小為8K,并可通過參數設置。
? ? ? 控制文件用于存放數據庫物理結構信息(包含數據庫名、聯機重做日志的名字和位置等),是一個很小的二進制文件。打開或恢復數據庫時都需要用到控制文件中的信息。
IO 特征:負載很小,數據塊大部分為16KB,少量4KB,極小范圍內隨機讀寫,讀比例80%,注重可靠性。
? ? ? 聯機重做日志文件,當用戶提交事務后,由后臺進程LGWR將用戶提交的事務寫入重做日志條目而形成的文件,它記錄了所有數據的改變,當數據庫數據丟失時可以用它來恢復數據庫。
IO 特征:OLTP 應用中聯機重做日志的訪問非常頻繁,數據模型為多路小IO 順序寫,日志歸檔時,增加一路高負載的大IO 順序讀。
? ? ? 歸檔日志文件,在歸檔模式下,當重做日志填滿后,由oracle后臺進程ARCn將填滿的重做日志復制到一個或多個路徑下形成的文件,主要用于數據庫的恢復。
IO 特征:進行聯機重做日志歸檔時,為順序寫;進行歸檔日志備份時,為順序讀。綜上所述,Oracle數據庫各文件的I/O特點總結如下。
OLTP應用的IO特征
? ? ? OLTP通常是指事務性非常高的在線系統,以小的事務以及小的查詢為主,評估其系統的時候,一般看其每秒執行的Transaction以及Execute SQL的數量。在這樣的系統中,單個數據庫每秒處理的Transaction往往超過幾百個,或者是幾千個,Select語句的執行量每秒幾千甚至幾萬個。典型的OLTP系統有電子商務系統、銀行、證券等。OLTP應用的IO特征如下。
每個I/O非常小,通常為2KB~8KB
訪問磁盤數據的位置非常隨機
至少30%的數據是隨機寫操作
聯機重做日志是寫入非常頻繁的順序寫
? ? ? OLTP系統最容易出現瓶頸的地方除了服務器的CPU,就是存儲系統IOPS處理能力。因為在OLTP環境中,硬盤物理讀一般都是db file sequential read,即單個數據塊物理讀,但是這個讀的次數非常頻繁。如果頻繁到硬盤子系統都不能承載其IOPS的時候,就會出現大的性能問題。
OLAP應用的IO特征
? ? ? OLAP系統,也稱為DSS決策支持系統,就是我們說的數據倉庫。在這樣的系統中,絕大多數時候數據庫上運行著的是報表作業,執行基本上是聚合類的SQL 操作,比如Group by,同時掃描非常多的行,一個查詢將花費數小時,甚至數天,一次讀取的數據量大;一般無數據修改,或者只有非常少的數據修改,OLAP應用的IO特征:
單個I/O很大,典型的值為64KB~1MB
讀取操作為順序讀取
當讀取操作進行時,發生的寫操作通常在臨時表空間內
平常對在線日志寫入很少,除非在批量加載數據時
? ? ? OLTP系統最容易出現瓶頸的地方是存儲系統的帶寬。陣列的帶寬則往往取決于主機到陣列的前端網絡和后端硬盤的個數,這個時候,陣列CACHE基本是沒有效果的,數據庫的讀寫類型基本上是db file scattered read與direct path read/write。
Oracle ASM配置建議
? ? ? ASM是Oracle 10g引入的新特性,在Oracle 11g中進一步強化。作為專門為Oralce數據庫文件創建的集成文件系統和卷管理器,ASM提供了媲美裸設備的性能,同時又具備類似文件系統的易管理性,實現高效靈活的數據庫存儲及文件管理。
Oracle 數據庫ASM結構
? ? ? ASM在linux平臺的架構如圖所示,陣列的一個LUN映射給操作系統,會形成一個系統盤,一個系統盤分區對應一個ASM Disk。Oracle建議一個系統盤只創建一個硬盤分區。
數據庫配置建議
? ? ? 在創建ASM Diskgroup時,需要設置必要的冗余級別。冗余級別共有三種:EXTERNAL, Oracle不做鏡像處理,依賴外部存儲冗余;NORMAL實現數據2路鏡像;HIGH實現數據3路鏡像。對于Voting Disk,NORMAL是3路鏡像,HIGH是5路鏡像,同時Oracle建議Voting Disk為奇數個。
? ? ? 為了方便文件管理和提高數據庫性能,建議按文件類型存放在不同的ASM磁盤組中。AU是ASM磁盤組的最小存儲單位,默認值1M,對于順序大IO業務,Oracle建議AU大小為4M,此時應將操作系統I/O設置為最大。Oracle臨時表空間主要用來做查詢和存放一些緩沖區數據,對查詢的中間結果進行排序。如果是存在大量group by查詢的系統,建議為臨時表空間創建單獨的ASM Diskgroup,保證足夠的硬盤空間。
存儲配置建議
? ? ? Oracle ASM Diskgroup建議使用多個LUN,能提高硬盤利用率和加大帶寬。但是,如果ASM Diskgroup中Disk都是來自同一個陣列的同一個RAID組,且該RAID組為FC、SAS、或SSD盤,則建議每個ASM磁盤組規劃兩個ASM Disk,雙控負載均衡;如果是SATA盤,則建議規劃一個ASM Disk。如果ASM Diskgroup中Disk是來自多個RAID組,建議ASM Disk個數與RAID組個數對應,一個RAID組只創建一個LUN,并對應一個ASM Disk,多控制器間負載均衡。
? ? ? AU是ASM最基本的存儲空間分配單位,在設置LUN的分條單元時,應該保證分條大小與ASM的AU大小一致。
? ? ? OCR 、數據文件、控制文件都是隨機小IO,Oracle建議用RAID10,可以有效的避免熱點數據的產生,同時能在硬盤故障期間提供更佳的性能,這幾種文件讀寫都比較頻繁,容量小且對性能要求高,建議不采用SATA盤。歸檔文件數據量大,且為順序大IO,從成本考慮,建議用SATA盤RAID6。
? ? ? 聯機重做日志文件歸檔和歸檔文件備份時,都是1M的順序IO,建議預取策略設置為固定預取1M。
SSD盤優化讀工作負載
? ? ? 列陣列提供了多種讀預取功能,對于讀請求來說,請求的數據如果保留在CACHE中,會立即得到服務,而不會產生額外的磁盤I/O。直接從CACHE中獲得服務,而未造成硬盤訪問的讀取操作,稱為讀命中。如果讀操作未命中,請求的數據不在CACHE中,那么CACHE必須從硬盤上檢索出這些數據。由于傳統硬盤固有的機械延遲,讀操作未命中將造成 I/O 響應時間增加。
? ? ? 對于順序讀工作負載,CACHE讀命中率較高,它們獲得服務的速度已經達到內存訪問速度,因此將這類工作負載部署在SSD盤,性能不會明顯提高。因此,SSD盤適合用來部署CACHE命中率較低的隨機小I/O讀負載。數據庫中隨機讀取的工作負載有以下兩種:
OLTP應用的數據文件。如果SSD盤容量允許,建議將數據文件都放在SSD盤,提升數據庫性能。但是,通常數據庫的數據文件都比較大,而SSD盤的容量有限,無法放下所有的數據文件,建議將選取熱點表空間放在SSD盤。如果SSD盤容量還是無法滿足熱點表空間需求,建議只將熱點索引放在SSD盤。
OLAP應用當用戶或查詢并發很高時,對于存儲系統來說,這樣的數據文件也是隨機負載。同時如果SSD容量允許,建議將數據庫的臨時表空間放在 SSD 上。這樣可以幫助縮短復雜的?“group by”?或?“order by”?查詢所需的排序時間。
SSD盤優化寫工作負載
? ? ? 陣列的Cache針對寫業務,提供回寫和透寫功能。回寫會進行IO合并,即把多個主機寫請求歸一為一個內部寫請求,從而減少訪問硬盤的次數,并且這個內部寫請求足夠大,往往是條帶的整數倍。所以,在回寫情況下,寫請求總是寫入緩存,不會造成物理磁盤存取而引起的延遲。
? ? ? Oracle數據庫聯機重做日志文件,要求必須每3秒或在事務提交時寫入到磁盤,寫入頻繁,且對響應時間的要求很高。所以,聯機重做日志文件的LUN必須選擇回寫功能,確保日志寫操作直接從陣列緩存獲得服務來確保響應時間。因此,聯機重做日志文件未必需要放在SSD盤上。但是,如果數據庫受累于大量的提交時間和較長的日志 I/O 延時,那么將聯機重做日志放在SSD 將有所幫助。
福利
掃描添加小編微信,備注“姓名+公司職位”,加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習!
推薦閱讀:
mysql表設計要注意什么?
漫話:如何給女朋友解釋鴻蒙OS是怎樣實現跨平臺的?
換臉軟件 ZAO 刷屏:你在玩換臉,別人想要你的臉!
只給測試集不給訓練集,要怎么做自己的物體檢測器?
華為鴻蒙為什么非要碰物聯網?
Dropout、梯度消失/爆炸、Adam優化算法,神經網絡優化算法看這一篇就夠了
真香,朕在看了!
總結
以上是生活随笔為你收集整理的实战: 如何掌握Oracle和业务IO知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7系统安装开机黑屏怎么办啊 win
- 下一篇: 云栖大会|十年阿里云存储进化史:今天最好