大數(shù)據(jù)的出現(xiàn)加劇了DBA的問(wèn)題,因?yàn)楝F(xiàn)在多個(gè)分布式應(yīng)用需要訪問(wèn)一個(gè)非常龐大的數(shù)據(jù)存儲(chǔ)。那么在DB2的環(huán)境下,有哪些可用調(diào)優(yōu)的方法呢?
DBA必須首先解決常見(jiàn)的應(yīng)用性能瓶頸。如果數(shù)據(jù)可用性或性能已經(jīng)很差,那么面向高性能訪問(wèn)大數(shù)據(jù)就會(huì)出現(xiàn)問(wèn)題。這里是一份常見(jiàn)的調(diào)優(yōu)問(wèn)題列表,DBA要確保數(shù)據(jù)庫(kù)存在這些流程以減輕這些潛在的問(wèn)題。
數(shù)據(jù)訪問(wèn)模式的糟糕設(shè)計(jì)
如果表中某個(gè)記錄集訪問(wèn)頻繁,那么它們便可成為一個(gè)“熱點(diǎn)”。比如一個(gè)按訂單號(hào)排序的訂單表。最近的訂單會(huì)在它們處理的時(shí)候更加活躍。由于多個(gè)應(yīng)用程序和工具訪問(wèn)少量記錄,那么數(shù)據(jù)訪問(wèn)的影響就會(huì)集中在數(shù)據(jù)庫(kù)中的一個(gè)小范圍內(nèi)。當(dāng)某些事務(wù)鎖定或聲明數(shù)據(jù)時(shí),而其他應(yīng)用程序或工具試圖對(duì)它們進(jìn)行訪問(wèn),這通常就會(huì)導(dǎo)致性能問(wèn)題。
這樣的熱點(diǎn)可以在數(shù)據(jù)庫(kù)設(shè)計(jì)階段加以預(yù)測(cè)。DBA可以在數(shù)據(jù)庫(kù)中嵌入空白空間來(lái)分散數(shù)據(jù),這樣就降低了在一個(gè)物理點(diǎn)活動(dòng)的集中程度。其他選項(xiàng)包括分配記錄到整個(gè)數(shù)據(jù)庫(kù)的方法。在我們以上的訂單表例子中,DBA可能會(huì)實(shí)現(xiàn)以地理位置進(jìn)行排序而非按訂單號(hào)排序的表。這樣,新訂單就不會(huì)彼此相鄰,而是分布于整個(gè)物理表。
過(guò)度加鎖
在DB2環(huán)境中有兩個(gè)流程級(jí)別可以“存儲(chǔ)”數(shù)據(jù):SQL流程和數(shù)據(jù)庫(kù)工具。SQL流程包括應(yīng)用程序發(fā)布靜態(tài)SQL語(yǔ)句和動(dòng)態(tài)發(fā)布的SQL語(yǔ)句。SQL會(huì)發(fā)布針對(duì)數(shù)據(jù)的鎖,并且這些鎖通常會(huì)避免數(shù)據(jù)正在被讀取的時(shí)候并發(fā)更新。此外,加鎖會(huì)避免諸如Load之類(lèi)的工具加載數(shù)據(jù),這會(huì)導(dǎo)致取代或是覆蓋正在被讀取的數(shù)據(jù)。工具會(huì)發(fā)布針對(duì)數(shù)據(jù)的聲明。一條聲明類(lèi)似于數(shù)據(jù)庫(kù)鎖,是因?yàn)樗梢酝ㄟ^(guò)實(shí)體來(lái)保留數(shù)據(jù)以供訪問(wèn)并避免某些并發(fā)的SQL訪問(wèn)。一般來(lái)說(shuō),加鎖會(huì)強(qiáng)制聲明去等待,而聲明會(huì)強(qiáng)制SQL操作去等待。這就允許數(shù)據(jù)庫(kù)管理系統(tǒng)可以管理多個(gè)諸如Load或是Image Copy之類(lèi)的并發(fā)工具,而不用受到SQL語(yǔ)句的干擾。
最常見(jiàn)的加鎖問(wèn)題是SQL語(yǔ)句鎖定太多的數(shù)據(jù)。一條SQL語(yǔ)句讀取一條記錄通常會(huì)在此SQL語(yǔ)句執(zhí)行期間鎖定多條記錄為只讀。這種行為在多個(gè)地方是受控的,包括語(yǔ)法,數(shù)據(jù)庫(kù)定義,以及通過(guò)應(yīng)用程序提交語(yǔ)句的用法。DBA應(yīng)該審查SQL語(yǔ)句加鎖行為來(lái)確保鎖定最小量的數(shù)據(jù)。了解鎖定對(duì)象的大小和應(yīng)用是如何訪問(wèn)數(shù)據(jù)的。
長(zhǎng)期運(yùn)行的應(yīng)用程序可能會(huì)長(zhǎng)時(shí)間鎖定數(shù)據(jù),從而降低了數(shù)據(jù)可用性?紤]記錄級(jí)別的鎖定來(lái)最小化SQL的影響,盡管這可能會(huì)導(dǎo)致用于管理加鎖的CPU時(shí)間有所上升。應(yīng)用程序提交邏輯同樣應(yīng)該加以審查,提交會(huì)釋放鎖定并允許數(shù)據(jù)訪問(wèn)。此外,DBA應(yīng)該審查應(yīng)用程序和工具的調(diào)度。例如,驗(yàn)證諸如Image Copy這類(lèi)工具在應(yīng)用程序做數(shù)據(jù)庫(kù)更新的時(shí)候沒(méi)有在并發(fā)運(yùn)行。
大數(shù)據(jù)應(yīng)用調(diào)優(yōu)
大數(shù)據(jù)通常意味著一個(gè)需要高速數(shù)據(jù)分析軟件的大型數(shù)據(jù)存儲(chǔ)。很多時(shí)候這些大數(shù)據(jù)部署與企業(yè)數(shù)據(jù)倉(cāng)庫(kù)共存。這意味著DBA人員必須與數(shù)據(jù)倉(cāng)庫(kù)人員進(jìn)行協(xié)作以保證良好的性能。下面提到的一些點(diǎn)需要我們充分考慮:
置于一個(gè)專(zhuān)門(mén)的軟硬件一體化設(shè)備中的大數(shù)據(jù)必須經(jīng)常由數(shù)據(jù)倉(cāng)庫(kù)表同時(shí)進(jìn)行訪問(wèn)。這通常是利用SQL連接語(yǔ)句加以實(shí)現(xiàn)的。DBA必須協(xié)調(diào)大數(shù)據(jù)設(shè)備的加載和數(shù)據(jù)倉(cāng)庫(kù)的ETL流程以確保所有數(shù)據(jù)在查詢(xún)階段是可用的。
存儲(chǔ)于非常大的DB2表中的大數(shù)據(jù)可能會(huì)有特殊的恢復(fù)需求?紤]一個(gè)要每天進(jìn)行分析的事務(wù)數(shù)據(jù)的大型存儲(chǔ)。業(yè)務(wù)管理者可能會(huì)認(rèn)為此分析對(duì)日常生產(chǎn)至關(guān)重要,從而指定此數(shù)據(jù)為關(guān)鍵任務(wù)。如果發(fā)生故障,這些數(shù)據(jù)要怎樣才能恢復(fù)呢?對(duì)于一個(gè)數(shù)據(jù)倉(cāng)庫(kù)最佳的做法就是指定數(shù)據(jù)在恢復(fù)上為低優(yōu)先級(jí)的。
存儲(chǔ)在DB2表中的大數(shù)據(jù)可能需要DBA去降低或是最小化數(shù)據(jù)上索引的數(shù)量。雖然通常來(lái)說(shuō)可以添加多個(gè)索引到一個(gè)表來(lái)改善查詢(xún)性能,而對(duì)于非常大的表其索引也會(huì)很大。磁盤(pán)存儲(chǔ)限制可能會(huì)阻止DBA創(chuàng)建某些索引。此外,更多的索引會(huì)減緩數(shù)據(jù)插入性能,同樣還會(huì)讓任何數(shù)據(jù)庫(kù)恢復(fù)過(guò)程運(yùn)行更長(zhǎng)的時(shí)間。
數(shù)據(jù)倉(cāng)庫(kù)訪問(wèn)優(yōu)化
數(shù)據(jù)倉(cāng)庫(kù)的ETL流程有其自身獨(dú)特的性能問(wèn)題。數(shù)據(jù)提取流程通常會(huì)作為多個(gè)并行數(shù)據(jù)查詢(xún)流程加以執(zhí)行。數(shù)據(jù)倉(cāng)庫(kù)團(tuán)隊(duì)可能會(huì)使用高速網(wǎng)絡(luò)來(lái)加速這一流程。由于可操作數(shù)據(jù)可能不是以易于分析的形式呈現(xiàn)的,因此數(shù)據(jù)轉(zhuǎn)換需要編程技能。常見(jiàn)問(wèn)題有空值,缺失或未知數(shù)據(jù),甚至是諸如日期值為“99/99/9999”的無(wú)效數(shù)據(jù)。加載流程通常包括多個(gè)針對(duì)倉(cāng)庫(kù)表并發(fā)加載的工具。加載通常是長(zhǎng)期運(yùn)行和資源密集型的。
由于分布式應(yīng)用試圖訪問(wèn)大數(shù)據(jù),它們也不可避免的會(huì)訪問(wèn)數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)。再次,DBA必須將此過(guò)程與數(shù)據(jù)倉(cāng)庫(kù)ETL過(guò)程加以協(xié)調(diào)。常見(jiàn)的方法是架設(shè)有兩個(gè)分區(qū)的表,活動(dòng)和非活動(dòng)分區(qū)。目標(biāo)表物理上被分為數(shù)據(jù)集和分區(qū)。一個(gè)分區(qū)被指定為活動(dòng)分區(qū),而一個(gè)控制表或參數(shù)被設(shè)置用來(lái)指示哪個(gè)分區(qū)是活動(dòng)的。分布式查詢(xún)現(xiàn)在可能訪問(wèn)活動(dòng)的數(shù)據(jù),允許加載流程把數(shù)據(jù)加載到非活動(dòng)分區(qū)。一旦加載完畢,活動(dòng)和非活動(dòng)標(biāo)記就會(huì)切換。
分布式處理和大數(shù)據(jù)
優(yōu)化分布式訪問(wèn)性能的一個(gè)最佳實(shí)踐是使用資源約束分析。DBA會(huì)在收集性能數(shù)據(jù)的時(shí)候監(jiān)視諸如磁盤(pán)子系統(tǒng)和CPU之類(lèi)的資源。甚至查詢(xún)和工作運(yùn)行時(shí)間也可以被當(dāng)做是資源。當(dāng)DBA發(fā)現(xiàn)某項(xiàng)資源受限時(shí),他們會(huì)平衡其他資源以進(jìn)行彌補(bǔ)。
大數(shù)據(jù)可能意味著大的性能問(wèn)題,并且通過(guò)分布式應(yīng)用程序進(jìn)行訪問(wèn)會(huì)將這些問(wèn)題進(jìn)一步復(fù)雜化。DBA可以通過(guò)考慮以下方面來(lái)主動(dòng)了解這些問(wèn)題:
·數(shù)據(jù)庫(kù)設(shè)計(jì)選項(xiàng);
·執(zhí)行資源約束分析;
·利用Explain優(yōu)化分布式查詢(xún);
·協(xié)調(diào)大數(shù)據(jù)訪問(wèn)和數(shù)據(jù)倉(cāng)庫(kù)訪問(wèn);
分布式應(yīng)用程序?qū)τ贒BA來(lái)說(shuō)可能會(huì)是個(gè)挑戰(zhàn)。通過(guò)解決當(dāng)前以及潛在的數(shù)據(jù)可用性問(wèn)題作為開(kāi)始,尤其是那些企業(yè)數(shù)據(jù)倉(cāng)庫(kù)中的問(wèn)題。一旦這些擔(dān)憂得以緩解,那么DBA就可以開(kāi)始管理對(duì)大數(shù)據(jù)的分布式數(shù)據(jù)訪問(wèn)。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:如何進(jìn)行分布式大數(shù)據(jù)應(yīng)用調(diào)優(yōu)
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10839712549.html