解讀GaussDB(for MySQL)靈活多維的二級分割槽表策略

华为云开发者联盟發表於2024-07-19

本文分享自華為雲社群《GaussDB(for MySQL)創新特性:靈活多維的二級分割槽表策略》,作者:GaussDB 資料庫。

背景介紹

分割槽表及二級分割槽表的功能,可以讓資料庫更加有效地管理和查詢大規模資料,傳統商業資料庫具備該能力。MySQL支援分割槽表,與傳統商業資料庫相比,MySQL對二級分割槽表功能的支援尚顯不足,存在一定的功能差距。

為了彌補這一差距,GaussDB(for MySQL)釋出了對二級分割槽表功能的支援。這一舉措旨在讓MySQL使用者能夠享受到與傳統商業資料庫類似的分割槽管理和查詢優勢,提高資料庫的靈活性和效能。

GaussDB(for MySQL)致力於為使用者提供更全面、更強大的資料庫解決方案,滿足其日益增長的資料管理需求。

分割槽表

眾所周知,分割槽表就是從邏輯上對一個表劃分成多個分割槽,實現物理上的隔離或效能上的最佳化。GaussDB(for MySQL)繼承了開源社群的分割槽表功能,能夠為各個分割槽定義不同的引擎以及表空間等屬性,方便使用者管理。

隨著表資料的膨脹,單純的一個表很容易出現效能問題。如隨著資料量的增加,查詢資料量可能會隨之變大,進而導致同一條查詢語句效能也會隨之下降。而分割槽表提供瞭解決大表問題的一個手段,將一張大表分成不同的分割槽,按照分割槽定義,合理的書寫查詢語句,可以使得資料量變化的情況下,查詢效能的穩定。

另外一種情況就是,隨著時間的推移,表資料中會出現冷資料,如何管理冷資料以及控制冷資料對查詢效能的影響,分割槽表也是一個不錯的手段。將冷資料歸檔到某個或者某幾個分割槽,查詢的時候只需查詢熱分割槽內的資料,可以避免對冷資料的影響。

一個分割槽表結構圖如下所示:

1.png

二級分割槽表

二級分割槽,又稱為子分割槽,是在一級分割槽的基礎上進一步對資料進行細分的技術。在資料庫表中,可以根據一個或多個欄位的值將資料劃分為不同的分割槽,這就是一級分割槽。而二級分割槽則是在一級分割槽的基礎上,再根據其他欄位的值對每個一級分割槽內的資料進行細分。

透過二級分割槽,可以將資料表劃分為更小、更易於管理的片段,從而提高資料的儲存效率和查詢效能。具體來說,二級分割槽有以下優勢:

  1. 靈活的資料管理:透過二級分割槽,可以根據業務需求和資料特點靈活地定義分割槽策略,實現資料的按需儲存和查詢。
  2. 提高查詢效率:由於二級分割槽將資料劃分為更小的片段,因此,在查詢時可以只掃描相關的分割槽,減少不必要的資料掃描,從而提高查詢速度。
  3. 便捷的資料備份和恢復:透過二級分割槽,只需備份或恢復特定的分割槽,而不是整個資料表,節省備份和恢復所需的時間和空間。

二級分割槽表更多的是從維度來考慮。當一級分割槽的資料量開始增加時,可以從另一個維度對其進行管理。例如,在一個銷售情況表中,一級分割槽可以按地區進行劃分,而二級分割槽可以按年份進行進一步劃分。這樣,當需要查詢某地某年的情況時,只需訪問二級分割槽內的資料,就可以獲得很好查詢的效能。

二級分割槽結構圖如下:

22.png

分割槽表的優點

  1. 支援在分割槽級別而不是在整個表上進行資料載入、索引、建立和重建,以及備份和恢復等資料管理操作,可以大幅減少操作時間。
  2. 提高查詢效能。通常可以透過訪問分割槽的子集而不是整個表來獲得查詢的結果。對於某些查詢,分割槽修剪技術可以提供數量級的效能提升,減少無效IO訪問。
  3. 分割槽維護操作的分割槽獨立性,允許使用者對同一表或索引的一些分割槽執行維護操作,而同時保證無運維操作的分割槽執行併發和DML操作不受影響。查詢以及DML和DDL支援並行執行。
  4. 如果將關鍵表和索引劃分為分割槽以減少維護視窗,則可以提高關鍵應用的資料庫可用性。
  5. 無需重寫應用就可以利用分割槽能力。
  6. 更容易的資料生命週期管理能力。

特性介紹

1. 增強MySQL二級分割槽型別

GaussDB(for MySQL)對分割槽表型別進行了增強,組合分割槽中的二級分割槽支援更多型別(Range/List/Hash),滿足客戶不同場景、不同資料型別(如時間)。

11.PNG

2.支援List Default [Hash]

List Default [Hash] 分割槽是一種高階分割槽策略,用於最佳化資料管理和查詢效能,特別是在處理長尾資料和多樣化類別資料時。以下是對List Default [Hash] 分割槽的作用和應用場景的詳細描述:

1)資料隔離

  • 主要資料類別獨立:透過列表分割槽(List Partitioning),可以將主要的資料類別(如特定型別的日誌、訂單狀態、裝置型別等)分離到獨立的分割槽中。這樣可以確保主要類別的資料在查詢時不受其他類別資料的干擾,提高查詢效率。
  • 長尾資料管理:未明確分類的資料(通常是長尾資料)被放入預設分割槽(Default Partition),使得長尾資料與主要類別資料分離管理,減少了對主要資料類別的影響。

2)資料均勻分佈

  • 雜湊分割槽(Hash Partitioning):將預設分割槽中的資料按雜湊演算法均勻分佈到多個子分割槽中。這種方式可以避免資料在單一分割槽中過於集中,防止單一分割槽成為效能瓶頸,提升查詢和管理效率。

3)查詢最佳化

  • 減少掃描範圍:在查詢時,只需掃描相關的分割槽,而不需要掃描整個表的資料,從而顯著減少I/O操作,提高查詢效能。
  • 平衡負載:透過雜湊分割槽將長尾資料均勻分佈在多個分割槽中,避免某個分割槽的資料量過大,提升資料庫的併發處理能力和響應速度。

4)靈活資料管理

  • 獨立維護:不同分割槽的資料可以獨立進行維護、備份和歸檔,提升資料管理的靈活性和效率。
  • 動態擴充套件:當資料量增加時,可以動態增加分割槽,透過調整雜湊分割槽的數量來平衡負載和最佳化效能。

3. 支援RANGE INTERVAL 分割槽

RANGE INTERVAL分割槽是一種基於範圍的分割槽策略,其中資料根據指定的範圍進行分割槽,並且可以自動建立新的分割槽以處理未來的資料。這種方法特別適用於時間序列資料等連續增長的資料集。下面是RANGE INTERVAL 分割槽的優勢:

1)自動分割槽:不需要手動定義每個分割槽,當新資料超出現有分割槽範圍時,資料庫會自動建立新的分割槽。

2)減少DBA工作量:DBA 不再需要頻繁地監控資料增長並手動建立分割槽,系統會根據資料量動態調整分割槽。

3)查詢最佳化:查詢時只需掃描相關的分割槽,而不是整個表,從而提高查詢效率。

4)易於管理:簡化了資料管理,尤其是對於不斷增長的資料集。

分割槽表的應用場景

分割槽表可以更好的應用到哪些使用者場景?

日誌資料分析

應用場景:

  • 伺服器日誌管理:在大型網站或應用中,伺服器每天會生成大量的訪問日誌、錯誤日誌等,使用分割槽表可以按天、按型別(訪問日誌、錯誤日誌)進行分割槽,也可以先按日期進行一級分割槽,然後按日誌型別(如訪問日誌和錯誤日誌)進行二級分割槽。
  • 安全日誌分析:在安全系統中,需要對大量的安全事件日誌進行分析,透過分割槽表按事件時間、事件型別(入侵檢測、登入失敗等)進行分割槽,可以快速定位並分析特定時間段或型別的安全事件,也可以先按事件時間進行一級分割槽,然後按事件型別(如入侵檢測、登入失敗)進行二級分割槽。
  • 應用效能監控:在應用效能監控系統中,每天會產生大量的效能資料日誌,透過分割槽表按應用模組、時間進行分割槽,可以快速分析某一模組在特定時間段的效能表現。也可以按照應用模組進行一級分割槽,然後按照時間段進行二級分割槽。

優點:

  • 快速查詢:針對特定時間段或型別的日誌進行查詢時,只需掃描相關分割槽,避免全表掃描,極大提高查詢速度。
  • 儲存管理:不同時間段的日誌資料可以按需保留或刪除,便於資料歸檔和管理。

電商交易資料分析

應用場景:

  • 訂單管理:電商平臺每天會產生大量的訂單資料,透過分割槽表按訂單號、交易時間、使用者ID等進行分割槽,可以快速查詢某個使用者的所有訂單或特定時間段的訂單。也可以先按交易日期進行一級分割槽,再按使用者ID或訂單狀態(如待支付、已支付、已發貨)進行二級分割槽。
  • 使用者行為分析:分析使用者的購物行為,例如使用者在某一時間段內的購買頻次、偏好等,透過分割槽表按使用者ID、行為時間進行分割槽,有助於精準營銷。也可以先按行為時間進行一級分割槽,然後按使用者ID或行為型別(如瀏覽、下單、支付)進行二級分割槽。
  • 庫存管理:電商平臺需要實時監控庫存,透過分割槽表按商品ID、時間進行分割槽,可以快速查詢某個商品在不同時期的庫存變動情況。也可以先按行為時間進行一級分割槽,然後按商品ID進行二級分割槽。

優點:

  • 高效查詢:針對某使用者或某時間段的交易資料查詢時,減少不必要的資料掃描,提高查詢效率。
  • 資料管理:按時間分割槽可以方便地進行歷史資料歸檔和刪除,最佳化儲存空間。

物聯網資料分析

應用場景:

  • 裝置狀態監控:物聯網系統中需要實時監控裝置狀態,透過分割槽表按裝置ID、時間戳進行分割槽,可以快速獲取裝置的實時資料或歷史資料。也可以先按裝置ID進行一級分割槽,再按資料時間戳進行二級分割槽。
  • 環境資料監測:在環境監測系統中,需要對不同地點的環境資料進行監測,透過分割槽表按地點ID、時間戳進行分割槽,可以快速查詢某一地點的環境變化情況。也可以先按監測地點進行一級分割槽,然後按資料時間戳進行二級分割槽。
  • 智慧家居:智慧家居裝置生成大量的資料,如溫度、溼度、用電量等,透過分割槽表按裝置ID、時間進行分割槽,可以有效管理和分析家庭裝置的資料。也可以先按行為時間進行一級分割槽,然後按裝置ID進行二級分割槽。

優點:

  • 實時性:可以快速查詢某個裝置的實時資料,滿足實時監控需求。
  • 歷史分析:方便查詢和分析裝置的歷史資料,識別長期趨勢和異常情況。

金融行業資料分析

應用場景:

  • 賬戶管理:金融機構需要管理大量的賬戶資訊和交易記錄,透過分割槽表按賬戶型別(個人賬戶、企業賬戶)、交易時間進行分割槽,可以快速查詢某個賬戶的交易記錄。也可以先按賬戶型別(如個人賬戶、企業賬戶)進行一級分割槽,再按交易時間進行二級分割槽。
  • 風險控制:在風險控制中,需要分析大量的交易資料,識別異常交易,透過分割槽表按交易時間、交易型別進行分割槽,可以高效定位並分析可疑交易。也可以先按交易時間進行一級分割槽,然後按交易型別(如存款、取款、轉賬)進行二級分割槽。
  • 投資分析:金融機構需要對投資資料進行分析,透過分割槽表按投資產品型別、時間進行分割槽,可以快速查詢某類產品在不同時間段的表現,輔助投資決策。也可以先按交易時間進行一級分割槽,然後按投資產品型別型別(如股票、債券、基金等)進行二級分割槽。

優點:

  • 高效資料分析:針對特定賬戶或時間段的金融資料查詢時,減少資料掃描,提高查詢速度。
  • 精準風險管理:方便對特定型別或時間段的交易進行細緻分析,及時發現並應對風險。

綜上列舉了部分適合分割槽表策略的一些應用場景,可以看出分割槽表在各種應用場景中,都能顯著提高資料查詢和分析的效率,便於資料管理和維護。透過合理設計分割槽策略(一級以及二級分割槽),針對性地進行資料分割槽,可以有效最佳化資料庫效能,滿足不同場景下的業務需求。

總結

分割槽表和二級分割槽表技術為大型資料庫系統提供了一種高效的資料儲存和查詢方案。透過靈活定義分割槽策略和資料劃分方式,可以實現資料的按需儲存和查詢,提高資料處理效率和分析能力。隨著資料量的不斷增長和業務需求的不斷變化,分割槽表和二級分割槽表技術將在更多領域得到應用和發展,為資料管理提供更加靈活和高效的解決方案。

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章