W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本章節(jié)介紹分布式執(zhí)行和并行查詢。
對于 Shared-Nothing 的分布式系統(tǒng),由于一個(gè)關(guān)系數(shù)據(jù)表的數(shù)據(jù)會以分區(qū)的方式存放在系統(tǒng)里面的各個(gè)節(jié)點(diǎn)上,所以對于跨分區(qū)的數(shù)據(jù)查詢請求,必然會要求執(zhí)行計(jì)劃能夠?qū)Χ鄠€(gè)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行操作,因而 OceanBase 數(shù)據(jù)庫具有分布式執(zhí)行計(jì)劃生成和執(zhí)行能力。
對于分布式執(zhí)行計(jì)劃,分區(qū)可以提高查詢性能。如果數(shù)據(jù)庫關(guān)系表比較小,則不必要進(jìn)行分區(qū),如果關(guān)系表比較大,則需要根據(jù)上層業(yè)務(wù)需求謹(jǐn)慎選擇分區(qū)鍵,以保證大多數(shù)查詢能夠使用分區(qū)鍵進(jìn)行分區(qū)裁剪,從而減少數(shù)據(jù)訪問量。
同時(shí),對于有關(guān)聯(lián)性的表,建議使用關(guān)聯(lián)鍵作為分區(qū)鍵,并采用相同分區(qū)方式,使用 Table Group 將相同的分區(qū)配置在同樣的節(jié)點(diǎn)上,以減少跨節(jié)點(diǎn)的數(shù)據(jù)交互。
OceanBase 數(shù)據(jù)庫的優(yōu)化器會自動根據(jù)查詢和數(shù)據(jù)的物理分布生成分布式執(zhí)行計(jì)劃。
并行查詢是指通過對查詢計(jì)劃的改造,提升對每一個(gè)查詢計(jì)劃的 CPU 和 IO 處理能力,從而縮短單個(gè)查詢的響應(yīng)時(shí)間。并行查詢技術(shù)可以用于分布式執(zhí)行計(jì)劃,也可以用于本地查詢計(jì)劃。
當(dāng)單個(gè)查詢的訪問數(shù)據(jù)不在同一個(gè)節(jié)點(diǎn)上時(shí),需要通過數(shù)據(jù)重分布的方式,將相關(guān)的數(shù)據(jù)分布到相同的節(jié)點(diǎn)進(jìn)行計(jì)算。以每一次的數(shù)據(jù)重分布節(jié)點(diǎn)為上下界,OceanBase 數(shù)據(jù)庫的執(zhí)行計(jì)劃在垂直方向上被劃分為多個(gè) DFO(Data Flow Object),而每一個(gè) DFO 可以被切分為指定并行度的任務(wù),通過并發(fā)執(zhí)行以提高執(zhí)行效率。
一般來說,當(dāng)并行度提高時(shí),查詢的響應(yīng)時(shí)間會縮短,更多的 CPU、IO 和內(nèi)存資源會被用于執(zhí)行查詢命令。對于支持大數(shù)據(jù)量查詢處理的 DSS(Decision Support Systems)系統(tǒng)或者數(shù)據(jù)倉庫型應(yīng)用來說,查詢時(shí)間的提升尤為明顯。
整體來說,并行查詢的總體思路和分布式執(zhí)行計(jì)劃有相似之處,即將執(zhí)行計(jì)劃分解之后,將執(zhí)行計(jì)劃的每個(gè)部分由多個(gè)執(zhí)行線程執(zhí)行,通過一定的調(diào)度的方式,實(shí)現(xiàn)執(zhí)行計(jì)劃的 DFO 之間的并發(fā)執(zhí)行和 DFO 內(nèi)部的并發(fā)執(zhí)行。并行查詢特別適用于在線交易(OLTP)場景的批量更新操作、創(chuàng)建索引和維護(hù)索引等操作。
當(dāng)系統(tǒng)滿足以下條件時(shí),并行查詢可以有效提升系統(tǒng)處理性能:
充足的 IO 帶寬
系統(tǒng) CPU 負(fù)載較低
充足的內(nèi)存資源
如果系統(tǒng)沒有充足的資源進(jìn)行額外的并行處理,使用并行查詢或者提高并行度并不能提高執(zhí)行性能。相反,在系統(tǒng)過載的情況下,操作系統(tǒng)會被迫進(jìn)行更多的調(diào)度,例如,執(zhí)行上下文切換或者頁面交換,可能會導(dǎo)致性能的下降。
通常在 DSS 系統(tǒng)中,需要訪問大量分區(qū)和數(shù)據(jù)倉庫環(huán)境,這時(shí)并行執(zhí)行能夠提升執(zhí)行響應(yīng)時(shí)間。對于簡單的 DML 操作或者分區(qū)內(nèi)查詢以及涉及分區(qū)數(shù)比較小的查詢來說,使用并行查詢并不能很明顯的降低查詢響應(yīng)時(shí)間。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: