Oracle Exadata一體機與雲端運算應用(二),oracleexadata

來源:互聯網
上載者:User

Oracle Exadata一體機與雲端運算應用(二),oracleexadata
3. Exadata主要技術

3.1 單元分流

  在資料庫雲端服務器中,儲存並不只是轉儲儲存。儲存單元有足夠的智能在內部處理某些負載,這樣可以減輕資料庫節點的工作。此過程被稱作單元分流。

3.2 智能掃描

  智能掃描是 Exadata最重要的一個功能,它的作用就是把SQL 放在每個Cell 上去運行,然後每個Cell只返回合格資料給資料庫,這樣就極大的降低了資料庫伺服器的負載和網路流量,並充分利用了Cell的計算資源和IO資源。
  在傳統 Oracle 資料庫中,當使用者選擇一行甚至是一行中的單個列時,包含該行的整個資料區塊都會從磁碟讀取到緩衝區快取,然後從該資料區塊提取所選的行(在某些情況下是列)並將其提供給使用者會話。在資料庫雲端服務器中,大多數類型的訪問都採用這一過程,但有幾種非常重要的類型卻不是這樣。直接路徑訪問(例如全表掃描和全索引掃 描)的過程與此不同。資料庫雲端服務器可以直接從磁碟提取特定行(或列)並將其發送到資料庫節點。此功能稱為“智能掃描”,可以極大地減少 I/O。
  例如有 10 億行資料,其中只有 1,000 行與您的查詢相匹配,但傳統資料庫中的全表掃描會檢索所有資料區塊並從中篩選出這些行。而智能掃描將只提取這 1,000 行(甚至是這些行中的特定列,如果所請求的是列的話)— 這可能減少 I/O 一千萬倍!單元分流支援單元實現此操作。


  這裡有一點要注意,在使用智能掃描時,每個Cell返回給DB Server的是結果集,而不再是傳統的Block,資料庫伺服器完成結果集的處理,並返回給用戶端。

3.3 儲存索引  智能掃描如何?只發送相關的行和列而不是塊?這要歸功於儲存單元內部的資料模式上構建的特殊資料結構。對於特定段,會將該段的所有列的最小值、最大值以及是否存在空值的資訊儲存在磁碟上的指定地區(通常大小為 1MB)。此資料結構稱為儲存索引。  當單元收到來自資料庫節點的支援智能掃描的查詢時,它將檢查儲存的哪些地區不含相應資料。例如,如果查詢謂詞聲明 where B = 1,則磁碟上列 B 的最小值和最大值分別為 3和8 的地區將肯定不會有任何匹配該謂詞的行。因此單元將跳過不讀取磁碟的該部分。通過檢查儲存索引,單元可排除不會包含該值的許多地區,因此可減少大量 I/O。  儘管儲存索引在名稱中有“索引”這個詞,但它與普通索引完全不同。普通索引用於瞄準最有可能找到行的位置;儲存索引則用於完全相反的目的 — 它關注的是最沒可能找到行的位置。而且,與其他段不同,這些段不是儲存在磁碟上;而是駐留在記憶體中。
3.4 混合列壓縮  首先我們要搞清楚,什麼是行壓縮,什麼叫列壓縮。我們熟悉的資料庫,如Oracle、MySQL等都是基於行的資料庫,就是行的不同欄位物理上存放在一起,還有一種是基於列的資料庫,就是每個欄位的不同行物理上存放在一起。他們的優缺點同樣突出:
  基於行的資料庫,訪問一行非常方便,但是由於同一列的資料是分開存放的,如果要針對某一列進行查詢時,幾乎要掃描整個表才能得到結果。基於行資料庫的壓縮,稱為行壓縮。
  基於列的資料庫,因為同一列的資料物理上放在一起,所以訪問一列非常方便,也就是說如果針對某一列進行查詢時,不需要掃描整個表,只需要掃描這一列的資料就可以了,但是訪問一行的全部欄位非常不方便。基於列資料庫的壓縮,稱為列壓縮。

  Oracle 通常說的 compress 功能(包括11g R2的Advanced compress),都是行壓縮,因為Oracle是個基於行的資料庫。大概的方法就是在block頭部存放一個symbol table,然後將相同的值放在那裡,每行上相同的資料指向symbol table,以此來達到壓縮的目的。行壓縮的效果通常不好,因為我們知道行與行之間,其實相同的資料並不多。但是列壓縮則不同,因為相同列的資料類型相同,很容易達到很好的壓縮效果。


  行壓縮和列壓縮都有其優缺點,而Oracle的混合列壓縮技術,實際上是融合了列壓縮的高壓縮比和行資料庫的訪問特性,將兩者的優點結合起來。Oracle提出了 CU 的概念(compress unit),在一個 CU 內,是一個基於列的儲存方式,採用列壓縮,但是一個 CU 內儲存了行的所有欄位資訊,所以在CU與CU之間,Oracle還是一個基於行的資料庫,訪問某一行,總是只在一個 CU 內(一個CU總是在一個block內)。


  如上面的,從高一層抽象上看,引入了一個新的叫做壓縮單元(compression unit,cu)的結構用於儲存混合列壓縮的行的集合。新的資料載入後,列值追加到舊有的行集合的後面,然後進行排序與分組等操作後進行壓縮。這一系列動作完成後,組成一個壓縮單元。直接一點說,也就是對列儲存做分段處理,而壓縮單元用來維繫不同分段之間的關係。有個特別之處是,要使用批量裝載(Bulk Loading)的方式,對於已經儲存的資料依然可以應用 DML 操作。而 Exadata 引擎對待已經存入的資料的策略是按需進行解壓縮。

  這是與傳統的 Oracle 資料庫引擎所說的壓縮截然不同的方式。至於資料倉儲壓縮與歸檔壓縮的功能,看起來只是針對不同的情境而設定了不同的壓縮密度而已。而 Oracle 之所以強調 Exadata 的壓縮能力,我想更多是因為 Exadata 目前對於儲存能力和價格上的限制吧。
  所以說混合列壓縮,結合了列壓縮和行訪問的特點,即可以提供非常高的壓縮率,又很好的保證了基於行類型的訪問。下面給出使用混合列壓縮應用在Oracle EBS的實際環境中的壓縮:

3.5 智能緩衝

  資料區塊在被發送給終端使用者之前存放在資料庫緩衝區快取中。如果在此找到資料,則不必往返訪問儲存。但如果未找到(大型資料庫就可能出現這種情況),則不可避 免地需要 I/O。在資料庫雲端服務器中,在資料庫緩衝區快取和儲存之間可存在二級緩衝,稱為“智能緩衝”。智能緩衝儲存頻繁訪問的資料,該緩衝中的資料可能滿足資料庫節點的請求,因而有可能不必轉到磁碟,從而可以提升效能。
  Oracle 資料庫與 Exadata 密切合作,對經常訪問的資料進行緩衝。當資料庫向Exadata Storage Server 發送讀或寫請求時,請求中會包含額外資訊,表明是否有可能再次讀取該資料以及因此是否應對其進行緩衝。Exadata Storage Server Software 根據資料庫發送的資訊智能地確定哪些資料會被再次讀取,因而值得進行緩衝,而哪些不需要緩衝。對錶和索引進行的隨機讀取很可能有後續讀操作,因此通常對其進行緩衝,隨後從快閃記憶體緩衝中提供資料。而掃描(即順序讀取表)通常不對其進行緩衝,因為按順序訪問的資料不太可能有相同的後續讀操作。一般情況下,寫操作會直接將資料寫到磁碟上,如果軟體認為後續還會再讀取這些資料,就會將這些資料暫時放入緩衝中。
  知道不緩衝哪些資料對實現緩衝效能非常重要。例如,對資料區塊進行重寫、備份或鏡像操作時,軟體將避免對這些塊進行緩衝。因為近期不會再次讀取這些塊,所以不必將寶貴的緩衝空間用於這些對象或塊上。只有 Oracle 資料庫和 Exadata Storage Server Software 具備此種可見度,能理解系統中進行的所有 I/O 操作的本質。由於具備對全部 I/O 操作的可見度,因此能夠最佳化對 Exadata 智能快閃記憶體緩衝的使用,只儲存經常訪問的資料。 該功能的所有操作均自動進行,無需客戶配置或調整,並且大多數情況下充分利用了 Exadata 智能快閃記憶體緩衝。
  Exadata 智能快閃記憶體緩衝是 Exadata Database Machine 的 OLTP 功能背後的動力。它為要求 最為苛刻的資料庫應用程式提供前所未有的 IOPS 且為倉庫中資料或報告應用程式提供 兩倍多的掃描速度,並為關鍵資料庫日誌記錄功能提供特殊支援。通過瞭解要緩衝的 資料和如何自動管理緩衝,結合了 Exadata 智能快閃記憶體緩衝的 Oracle Database 是市場上首 個且唯一一個支援快閃記憶體的資料庫。


3.5 I/O資源管理

  使用傳統儲存時,由於無法確定使用儲存子系統中的 I/O 頻寬的不同作業和使用者的工作的優先順序,阻礙了共用儲存網格的建立。當多個資料庫共用儲存子系統時也會發生這種情況。使用 Exadata儲存時,Exadata 儲存的 DBRM 和 I/O 資源管理功能可以防止一類工作或一個資料庫獨佔磁碟資源和頻寬,並確保滿足使用者定義的 SLA。DBRM 能夠在資料庫之間以及不同的使用者與各類工作之間對使用的 I/O 頻寬進行協調並確定優先順序。通過將資料庫與儲存環境緊密整合,資料庫雲端服務器可以知曉工作類型和使用的 I/O 頻寬量。因此,使用者可以讓資料庫雲端服務器系統識別各種類型的負載,為這些負載指定優先順序,並確保最關鍵的負載得到優先處理。
  在資料倉儲或混合負載環境中,您可能希望確保為資料庫中的不同使用者和任務分配相對適量的 I/O 資源。例如,您可能希望為系統上的互動式使用者指派 70% 的 I/O 資源,為批處理報表作業分配30% 的 I/O 資源。這可以使用 Exadata 儲存的 DBRM 和 I/O 資源管理功能很簡單地實現。
  資料庫雲端服務器管理員可以建立一個資源計劃,指定應如何確定 I/O 請求的優先順序。這可通過將不同類型的工作放入各個服務組(稱為使用者組)中來實現。使用者組可以由多個屬性定義,這些屬性包括使用者名稱、用戶端程式名、函數或查詢已啟動並執行時間長度。定義這些使用者組之後,使用者可以設定一個階層,規定哪個使用者組享有 I/O 資源的優先權,以及為每個使用者組分配多少 I/O 資源量。這種階層確定的 I/O 資源優先順序可以同時應用於資料庫內操作(即在資料庫內發生的操作)和資料庫間操作(即在不同資料庫間發生的操作)。
  當多個資料庫之間共用 Exadata 儲存時,您還可以確定為每個資料庫分配的 I/O 資源的優先順序,從而防止一個資料庫獨佔磁碟資源和頻寬,以確保滿足使用者定義的 SLA。


  實際上,Exadata I/O Resource Manager 解決了傳統儲存技術無法應對的一個挑戰:能夠對共用儲存子系統的多個資料庫和使用者的工作進行平衡和確定優先順序,藉此建立共用網格儲存環境。資料庫雲端服務器 I/O 資源管理可確保針對共用 Exadata 儲存的多個資料庫滿足使用者定義的 SLA。這確保了每個資料庫或使用者均可獲得適量份額的磁碟頻寬以滿足營運目標。

3.6 Exadata極限效能 彈效能力和極限效能保障:
  • 雲架構: 支援在計算層面、儲存層面、網路層面的並行和水平擴充
  • 儲存索引:資料感知型的動態記憶體索引
  • 智能掃描: 查詢負載下沉到儲存層完成
  • 智能快閃記憶體: 支援即時隨機I/O的儲存
  • 資料壓縮: 專門針對OLTP, 資料倉儲和歸檔資料最佳化
  • Infiniband: 支援大資料轉送的網路
  • 平衡的設計:木桶效應
資源集區化:
  • Infiniband Partition:更安全更高效的硬體網路磁碟分割
  • ASM (自動儲存管理) 所有資料庫共用的儲存
  • RAC (真實應用叢集) 通過多節點實現大資料庫共用
  • QoS 和 IORM (I/O 資源管理) 基於客戶定義的SLAs 來管理伺服器和儲存資源
  • Instance Caging 執行個體鎖定允許多個資料庫在在一個節點內進行資源共用
  •   部署簡單、快捷;資料載入、備份等批處理時間視窗顯著降低。典型案例:某大型銀行遷移到Exadata後,備份時間從12小時提到到1.5小時
  • 查詢效能通常能夠提升20~30倍
  • OLTP應用效能通常能提升8~10倍
  • 混合列壓縮技術使資料倉儲的壓縮比通常達到10倍,對於OLTP的壓縮比通常2~4倍
  • 降低機房佔用、節約能源,通常為原來系統的1/4面積和1/8能源
  • 效能大幅提升,可以減少索引的使用,節省了資料庫空間、並降低管理的複雜程度

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.