Exadata DB Server的軟件構(gòu)成:
(1) 標(biāo)準(zhǔn)版數(shù)據(jù)庫
(2) ASM:卷管理和冗余(2元鏡像/3元鏡像),所以說Exadata的存儲服務(wù)器不需要任何存儲保護(hù)的功能,僅僅是用內(nèi)置盤提供容量而已。在傳統(tǒng)主機(jī)+存儲的方式下,不需要ASM的冗余功能
(3) RAC:DB服務(wù)器節(jié)點(diǎn)的橫向擴(kuò)展
(4) iDB:把SQL訪問請求發(fā)送給存儲服務(wù)器,返回所要求的數(shù)據(jù)(跟傳統(tǒng)數(shù)據(jù)庫相比的重大區(qū)別:返回的是經(jīng)過篩選的數(shù)據(jù),而不是裸的data blocks)。當(dāng)然iDB可以選擇則返回裸數(shù)據(jù)塊給SGA
Exadata Storage Server的軟件構(gòu)成:
(1) cell services(cellsrv):多線程IO服務(wù)程序
(2) management server(MS):基于jave的,在cellsrv和cellcli之間的接口程序
(3) restart server(RS):用于監(jiān)控和重啟服務(wù)
(4) OSWatch:歷史數(shù)據(jù)收集vmstat和netstat
Exadata軟件架構(gòu):
上半部分是標(biāo)準(zhǔn)數(shù)據(jù)庫包括SGA、log writer和db writer等。
下半部分是存儲服務(wù)器:實(shí)際上只有一個(gè)cellsrv進(jìn)程負(fù)責(zé)處理和DB服務(wù)器的連接;cellinit.ora是cellsrv的靜態(tài)參數(shù);alert.log存放顯著事件;automatic diagnostic repositpry抓取和保存診斷信息;dsikmon負(fù)責(zé)監(jiān)控cell和網(wǎng)絡(luò)的“活性”,并且把DBRMS的計(jì)劃傳播到所有存儲服務(wù)器上;每個(gè) diakmon有一個(gè)從屬的進(jìn)程,負(fù)責(zé)ASM和DB之間的通訊。
其次,分析一下Exadata的幾大技術(shù)亮點(diǎn):
(1) 最最核心的技術(shù)是叫做smart scan,其它重要技術(shù)如HCC和Storage Index都必須依賴它才能運(yùn)行:其核心目的是把部分工作從DB服務(wù)器offload到存儲服務(wù)器上,利用存儲服務(wù)器的CPU參與SQL的處理。 Offload之所以重要是因?yàn)樵诖笕萘繑?shù)據(jù)庫DW應(yīng)用中傳統(tǒng)的瓶頸就在于大量數(shù)據(jù)的傳輸,而且傳統(tǒng)數(shù)據(jù)庫必須將所有的裸數(shù)據(jù)塊裝載到數(shù)據(jù)庫里面。 Smart scan減少DB服務(wù)器的CPU占用、減少數(shù)據(jù)傳輸量(只傳輸符合條件的數(shù)據(jù))、減少磁盤訪問的時(shí)間。所以比如在執(zhí)行單純的全表掃描的時(shí)候,smart scan對于訪問速度的提升確實(shí)有所幫助。相對而言,減少DB服務(wù)器CPU占用對于性能提升所起到的幫助最小,主要的“收益”來自于DB服務(wù)器和存儲服務(wù)器之間數(shù)據(jù)傳輸量的減少。
a. Column Projection:只返回所需要的“列”,減少數(shù)據(jù)傳輸
b. Predicate Filtering,:只返回所需要的“行”,減少數(shù)據(jù)傳輸
c. Storage Indexes:每一列的數(shù)據(jù)以1MB為分割單位,建立“分區(qū)”索引,每個(gè)index entry記錄一段數(shù)據(jù)區(qū)間的最大值、最小值和它們的物理位置。它的作用不是為了返回少量的數(shù)據(jù)給DB服務(wù)器,而是為了縮短存儲服務(wù)器訪問磁盤的時(shí)間??梢园阉醋瞿撤N形式上的“分區(qū)”機(jī)制。從這里可以看到Exadata的存儲和訪問形式,其本質(zhì)是一個(gè)典型的列式數(shù)據(jù)庫。
d. Simple Joins (Bloom Filters):把bloom filter也offload到存儲服務(wù)器上去做,減少DB服務(wù)器CPU占用。“事實(shí)上, Smart Scan 只能處理Join filtering,而真正Join的工作必須在DB Server上完成,而且Smart Scan 僅適合于處理 DSS 環(huán)境的復(fù)雜Join,對于 OLTP 類型的簡單Join,Smart Scan 并不能發(fā)揮其優(yōu)勢。~ 馮大輝《深入Oracle數(shù)據(jù)庫機(jī):Oracle Exadata五大技術(shù)亮點(diǎn)淺析》”
e. Function Offloading:部分內(nèi)建的SQL函數(shù)可以offload到存儲服務(wù)器上做,減少DB服務(wù)器CPU占用。
f. Hybrid Columnar Compression (HCC) :假如使用smart scan,解壓縮的工作在存儲服務(wù)器上完成。但是它的作用與smart scan減少傳輸量的初衷相反。所以需要權(quán)衡減少CPU占用和介紹傳輸量之間誰帶來的好處大,比如在cellsrv version 11.2.2.3.1中,在存儲服務(wù)器忙的時(shí)候,cell server可以返回未解壓的數(shù)據(jù)給DB服務(wù)器。
g. Encryption/Decryption:跟HCC類似,可以在cell server上運(yùn)行解密的工作,在ORALCE特定版本和相應(yīng)CPU的配合之下,解密可以得到硬件加速的幫助。
h. Virtual column運(yùn)算可以offload
i. data model scoring function運(yùn)算可以offload
j. Non-Smart Scan Offloading:與查詢無關(guān)的offload
i. Smart File Creation:數(shù)據(jù)塊初始化加速,由cell server執(zhí)行數(shù)據(jù)塊的格式化
ii. RMAN Incremental Backups:提高tracking的顆粒度~每一個(gè)block,而不是一組blocks
iii. RMAN Restores:在cell server上恢復(fù)
k. 觸發(fā)smart scan的前提(以下三條都滿足):
i. “全段落”掃描:Full Table Scan 或是 Fast Full Index Scan。TABLE ACCESS FULL= TABLE ACCESS STORAGE FULL,INDEX FAST FULL SCAN= INDEX STORAGE FAST FULL SCAN,MAT_VIEW ACCESS STORAGE FULL
ii. Direct Path Reads:并發(fā)讀取數(shù)據(jù)到program global area(PGA)。即使對于non-parallel scans ,ORACLE也可以根據(jù)情況自動的選擇Direct Path Reads。
iii. 數(shù)據(jù)保存在exadata storage上。假如ASM管理之下的存儲空間全部或者部分的不存放在cell server上,則不可以使用smart scan offloading。
(2) 第二大技術(shù):HCC。只有當(dāng)數(shù)據(jù)被用direct path loads的方式訪問的時(shí)候,可以做HCC壓縮。傳統(tǒng)的訪問仍然使用OLTP的壓縮方式。
a. HCC有四種壓縮方式
i. QUERY LOW(WAREHOUSE LOW):LZO compression algorithm,壓縮率最低
ii. QUERY HIGH(WAREHOUSE HIGH):ZLIB (gzip) compression algorithm,壓縮率中等
iii. ARCHIVE LOW:ZLIB (gzip) compression algorithm,但是壓縮率比QUERY HIGH高得多
iv. ARCHIVE HIGH:Bzip2 compression,壓縮率最高
b. CU=多個(gè)blocks(32/64KB),CU內(nèi)部數(shù)據(jù)的組織形式是按“列”而不是按“行”。優(yōu)點(diǎn)是由于列的數(shù)據(jù)類型相同,壓縮比率會很高,其作用在于提高壓縮比例,而不是提高訪問性能,“Here’s an example of running a CPU-intensive procedure:The compression slowed down the processing enough to outweigh the gains from the reduced number of data blocks that needed to be read。From 《Expert ORACLE Exadata》”。缺點(diǎn)是讀取任意一行的數(shù)據(jù)都需要裝載多個(gè)block組成的CU,所以特別不適合于需要做很多單行操作的訪問。
c. 當(dāng)現(xiàn)存記錄被更改時(shí),數(shù)據(jù)會被轉(zhuǎn)存到新的block中,而這個(gè)block是OLTP壓縮的。所以當(dāng)HCC表被頻繁update時(shí),所占空間會像“氣球”一樣膨脹。
d. Locking的機(jī)制使得單行操作會鎖住整個(gè)CU,這對于絕大多數(shù)OLTP環(huán)境來說是致命的。
(3) 第三大技術(shù):Storage Index,按照列字段值的索引。其設(shè)計(jì)目的是eliminate disk I/O,凡是不符合條件的區(qū)段都被跳過了。
(4) Smart Flash Cache
a. Sun recommends that the ESM modules be replaced every two years as the stored energy degrades over time (like a battery)
b. the Oracle Exadata Storage Software User’s Guide recommends powering down the storage servers before replacing one of these cards
c. 可按照任意比例劃分為ESFC和SSD盤(由ASM管理)使用,如果用于ASM管理的SSD盤,那么必須有足夠的redundancy,就降低了實(shí)際可用容量。
d. ESFC的獨(dú)特二叉讀取功能:在系統(tǒng)忙的時(shí)候,可以有選擇的從flash cache或者盤上讀取數(shù)據(jù)
e. Smart Scan通常讀盤而非讀取ESFC,但是可以通過開關(guān)指定Smart Scan去讀ESFC
f. 也可以用開關(guān)把特定的數(shù)據(jù)對象pin在ESFC里面
(5) Resource Management:DBRM和IORM
a. IORM only manages I/O for physical disks. I/O requests for objects in the flash cache or on flash-based grid disks are not managed by IORM.