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