MicroStrategy是Oracle數(shù)據(jù)庫(kù)內(nèi)存選件(Oracle Database In-Memory)的早期測(cè)試用戶之一。公司合作伙伴項(xiàng)目總監(jiān)Jochen Demuth在本文中將分享在測(cè)試項(xiàng)目過程中,MicroStrategy所學(xué)到的一些知識(shí)點(diǎn),其中包括部署Oracle數(shù)據(jù)庫(kù)內(nèi)存選件時(shí)需要注意的三件事。據(jù)了解,Demuth還將在即將召開的Oracle OpenWorld上分享他的經(jīng)驗(yàn),有興趣的朋友千萬不要錯(cuò)過現(xiàn)場(chǎng)的session。
最佳實(shí)踐之一:應(yīng)用設(shè)計(jì)需考慮雙格式數(shù)據(jù)架構(gòu)
每次對(duì)數(shù)據(jù)庫(kù)的查詢操作,都需要決定是以行存儲(chǔ)的方式還是列存儲(chǔ)的方式來訪問數(shù)據(jù)。其實(shí)答案是要根據(jù)具體的場(chǎng)景來決定的,而采取不同的方式會(huì)對(duì)你的查詢響應(yīng)速度產(chǎn)生巨大的影響。Demuth建議,當(dāng)DBA基于Oracle數(shù)據(jù)庫(kù)內(nèi)存選件進(jìn)行應(yīng)用設(shè)計(jì)的時(shí)候,一定要確保數(shù)據(jù)庫(kù)每次都能做出最佳的選擇。
那么做到這一點(diǎn)的關(guān)鍵在于,要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)schema設(shè)計(jì),定義主鍵和外鍵,然后收集統(tǒng)計(jì)數(shù)據(jù)。盡管這些工作在Oracle數(shù)據(jù)庫(kù)內(nèi)存選件當(dāng)中與傳統(tǒng)數(shù)據(jù)庫(kù)引擎沒有什么區(qū)別,但你一定要注重這些工作,因?yàn)樗鼈兪欠浅V匾?。如果沒有妥善處理好上述的任務(wù),那么Oracle數(shù)據(jù)庫(kù)內(nèi)存選件極可能會(huì)采取錯(cuò)誤的訪問方式,并最終導(dǎo)致響應(yīng)時(shí)間變長(zhǎng)的情況。
最佳實(shí)踐之二:只查詢需要的數(shù)據(jù)
盡管把數(shù)據(jù)庫(kù)需要做的事控制在最少是一個(gè)通用的最佳實(shí)踐,但在Oracle數(shù)據(jù)庫(kù)內(nèi)存選件環(huán)境下,這一點(diǎn)更為關(guān)鍵。首先,你要考慮需要查詢的數(shù)據(jù)究竟有多少。你是否需要完整的表?確保把目標(biāo)鎖定在相關(guān)的信息當(dāng)中。
這里你需要做的是避免數(shù)據(jù)庫(kù)把所有存儲(chǔ)的數(shù)據(jù)都掃描一遍,甚至包括那些明顯不必要的數(shù)據(jù)。做到這一點(diǎn)的關(guān)鍵在于分區(qū),設(shè)置一個(gè)高效的分區(qū)策略將幫助數(shù)據(jù)庫(kù)只提供特定類型的數(shù)據(jù),比如一個(gè)時(shí)間段內(nèi)的數(shù)據(jù)。
最佳實(shí)踐之三:資源最大化利用
Oracle數(shù)據(jù)庫(kù)內(nèi)存選件需要有充足的資源來進(jìn)行高效的數(shù)據(jù)處理,包括計(jì)算能力、內(nèi)存、磁盤以及I/O之間的配比。MicroStrategy本身并沒有在資源上提供完美的比例,但仍然有幾種方式能夠解決之一問題。
Demuth表示,Oracle建議的解決方案是采購(gòu)更多、更好的設(shè)備。毫無疑問,首先是內(nèi)存的需求,它需要大量的內(nèi)存資源。這也是Oracle向客戶推向硬件設(shè)備的方式之一。Demuth建議,盡管你所擁有的資源并不能完全滿足Oracle數(shù)據(jù)庫(kù)內(nèi)存選件的需要,但首先要做的就是讓你的數(shù)據(jù)庫(kù)能夠更高效地利用這些資源,做到物盡其用。