cpu代表什么意思 pu代表什么意思

預計算和緩存是計算機領域提高性能以及降低成本的最常見的手段之一 。對于那些經常重復的請求 , 如果可以通過緩存回答 , 比重新計算結果或從速度較慢的數據存儲中讀取要快得多 , 消耗更少的系統資源 。在數據庫領域中 , 物化視圖是預計算和緩存的自然體現 。
本文主要介紹什么是物化視圖 , 以及如何實現基于物化視圖的查詢改寫 。
在之一部分 , 我們會簡單介紹物化視圖 , 并介紹基于物化視圖的查詢改寫的用途 。在第二部分 , 我們將介紹查詢優化器使用物化視圖進行查詢改寫的匹配和改寫過程 。最后 , 我們將介紹查詢改寫的幾種實現方式 , 及其優缺點 。
背景介紹物化視圖
物化視圖是將查詢結果預先計算并存儲的一張特殊的表 。"物化"(Materialized) 這個詞是相對于普通視圖而言 。普通視圖較普通的表提供了易用性和靈活性 , 但無法加快數據訪問的速度 。物化視圖像是視圖的緩存 , 它不是在運行時構建和計算數據集 , 而是在創建的時候預先計算、存儲和優化數據訪問 , 并自動刷新來保證數據的實時性 。

cpu代表什么意思  pu代表什么意思

文章插圖
對于數據倉庫 , 物化視圖最重要的功能就是查詢加速 。數據倉庫中存在大量在大型表上執行復雜的查詢 , 這些查詢會消耗大量資源和時間 。物化視圖可以通過預計算的結果回答查詢 , 消除昂貴的聯接和聚合所帶來的開銷 , 大幅度改善查詢處理時間 , 降低系統負載 。對于可以預見并反復使用相同子查詢結果的查詢 , 物化視圖特別有用 。
為了實現物化視圖的潛力 , 需要解決三個問題:
物化視圖選擇:選擇哪些查詢和表構建物化視圖;物化視圖維護:減少物化視圖更新成本和時間;物化視圖運用:如何使用物化視圖加速查詢 。本文主要從查詢優化器的角度 , 介紹使用物化視圖加速查詢背后的技術實現 。
基于物化視圖的查詢改寫
直接查詢物化視圖可以大幅度改善查詢處理時間 , 但是需要用戶修改查詢語句 。使用物化視圖加速查詢的一個重要問題是 , 如何采用一種系統化和自動化的 ***  , 自動使用物化視圖回答查詢 。通過這種透明改寫 , 物化視圖可以像索引一樣添加或刪除 , 而不會影響已有 SQL 。
查詢改寫使得物化視圖具有廣泛的用途:
物化視圖可以透明地改寫查詢 , 無需改造業務就能使用物化加速查詢;方便地應用緩存公共結果集 , 以及預計算等跨查詢優化手段;對于數據倉庫 , 數據集成場景 , 物化視圖可以物化外表結果 , 屏蔽多個數據源的差異 , 實現本地副本或讀寫分離;查詢改寫結合自動構建物化視圖 , 實現數據庫自治加速 。查詢改寫的問題定義
為了實現更大范圍的改寫 , 查詢改寫通常被集成在優化器規則中 。這有幾個方面的好處 。
首先查詢改寫可以利用優化器其他規則 。依靠優化器其他規則將查詢轉換成標準和統一的形式 , 簡化匹配流程 , 增加改寫范圍 。其中比較重要的規則是列消除 , 謂詞下推 , 解關聯子查詢等 。解關聯子查詢規則允許物化視圖對包含關聯子查詢的查詢進行改寫加速 。
其次 , 優化器可以遞歸每一個子樹能否被某個視圖進行改寫 。每個相關視圖都會對每個子樹產生多次改寫 , 一個查詢語句不同部分可能被不同的視圖改寫 。最終所有的改寫都進入基于成本的選擇器中 , 與原始查詢一起選出更優的查詢計劃 。
查詢改寫算法只需要考慮給定的查詢表達式和視圖 , 判斷這個查詢表達式能否從視圖中計算出來 , 然后從視圖上構造一個等價的補償表達式 , 與原查詢表達式等價 。查詢改寫的范圍應該盡可能大 , 查詢改寫的目標是使用少量物化視圖改寫大量查詢 。最終由優化器選擇出一個更優的查詢計劃 。
查詢改寫檢查優化器通過多種方式來改寫查詢 。最簡單的一種情況是物化視圖的查詢與查詢完全匹配 , 符合這種查詢重寫類型的查詢數量很少 。為了進行更通用的匹配 , 優化器會嘗試使用各種規則構造一個等價表達式改寫查詢 。

推薦閱讀