分散式系統中的查詢最佳化



本章討論分散式資料庫系統中的查詢最佳化。

分散式查詢處理架構

在分散式資料庫系統中,處理查詢包括全域性和本地兩個級別的最佳化。查詢從客戶端或控制站點進入資料庫系統。在這裡,使用者被驗證,查詢被檢查、轉換並在全域性級別進行最佳化。

架構可以表示為 -

Distributed Query Processing Architecture

將全域性查詢對映到本地查詢

將全域性查詢對映到本地查詢的過程可以實現如下 -

  • 全域性查詢中所需的表片段分佈在多個站點。本地資料庫僅包含有關本地資料的資訊。控制站點使用全域性資料字典收集有關分佈的資訊,並從片段重建全域性檢視。

  • 如果沒有複製,全域性最佳化器將在儲存片段的站點執行本地查詢。如果存在複製,全域性最佳化器將根據通訊成本、工作負載和伺服器速度選擇站點。

  • 全域性最佳化器生成一個分散式執行計劃,以便在站點之間進行最少的資料傳輸。該計劃說明了片段的位置、查詢步驟執行的順序以及參與傳輸中間結果的過程。

  • 本地查詢由本地資料庫伺服器最佳化。最後,本地查詢結果透過聯合操作(對於水平片段)和連線操作(對於垂直片段)合併在一起。

例如,假設以下 Project 模式根據城市(城市為新德里、加爾各答和海德拉巴)進行水平分片。

PROJECT

PId City Department Status

假設有一個查詢要檢索所有狀態為“正在進行”的專案的詳細資訊。

全域性查詢將為 -

$$\sigma_{status} = {\small "ongoing"}^{(PROJECT)}$$

新德里伺服器中的查詢將為 -

$$\sigma_{status} = {\small "ongoing"}^{({NewD}_-{PROJECT})}$$

加爾各答伺服器中的查詢將為 -

$$\sigma_{status} = {\small "ongoing"}^{({Kol}_-{PROJECT})}$$

海德拉巴伺服器中的查詢將為 -

$$\sigma_{status} = {\small "ongoing"}^{({Hyd}_-{PROJECT})}$$

為了獲得總體結果,我們需要將這三個查詢的結果聯合起來,如下所示 -

$\sigma_{status} = {\small "ongoing"}^{({NewD}_-{PROJECT})} \cup \sigma_{status} = {\small "ongoing"}^{({kol}_-{PROJECT})} \cup \sigma_{status} = {\small "ongoing"}^{({Hyd}_-{PROJECT})}$

分散式查詢最佳化

分散式查詢最佳化需要評估大量的查詢樹,每個查詢樹都生成查詢所需的結果。這主要是由於大量複製和碎片資料的存在。因此,目標是找到一個最優解,而不是最佳解。

分散式查詢最佳化的主要問題是 -

  • 最佳化利用分散式系統中的資源。
  • 查詢交易。
  • 減少查詢的解空間。

最佳化利用分散式系統中的資源

分散式系統在各個站點有多個數據庫伺服器來執行與查詢相關的操作。以下是最佳化資源利用率的方法 -

操作遷移 - 在操作遷移中,操作在儲存資料的位置執行,而不是在客戶端站點執行。然後將結果傳輸到客戶端站點。這適用於運算元在同一站點可用的操作。示例:選擇和投影操作。

資料遷移 - 在資料遷移中,資料片段被傳輸到資料庫伺服器,並在那裡執行操作。這用於運算元分佈在不同站點上的操作。這也適用於通訊成本低且本地處理器比客戶端伺服器慢得多的系統。

混合遷移 - 這是資料和操作遷移的組合。在這裡,資料片段被傳輸到高速處理器,並在那裡執行操作。然後將結果傳送到客戶端站點。

Optimal Utilization Distributed System

查詢交易

在分散式資料庫系統的查詢交易演算法中,分散式查詢的控制/客戶端站點稱為買方,本地查詢執行的站點稱為賣方。買方制定了多個選擇賣方和重建全域性結果的備選方案。買方的目標是實現最優成本。

該演算法從買方將子查詢分配給賣方站點開始。最優計劃是從賣方提出的本地最佳化查詢計劃以及重建最終結果的通訊成本組合建立的。一旦制定了全域性最優計劃,查詢就會被執行。

減少查詢的解空間

最優解通常涉及減少解空間,以便減少查詢和資料傳輸的成本。這可以透過一組啟發式規則來實現,就像集中式系統中的啟發式一樣。

以下是一些規則 -

  • 儘早執行選擇和投影操作。這減少了通訊網路上的資料流。

  • 透過消除與特定站點無關的選擇條件來簡化水平片段上的操作。

  • 對於包含位於多個站點的片段的連線和聯合操作,將片段資料傳輸到大多數資料所在的站點並在那裡執行操作。

  • 使用半連線操作來限定要連線的元組。這減少了資料傳輸量,進而降低了通訊成本。

  • 合併分散式查詢樹中的公共葉子和子樹。

廣告

© . All rights reserved.