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

来源:https://www.cnblogs.com/huaweiyun/p/18310785
-Advertisement-
Play Games

本文分享自華為雲社區《GaussDB(for MySQL)創新特性:靈活多維的二級分區表策略》,作者:GaussDB 資料庫。 背景介紹 分區表及二級分區表的功能,可以讓資料庫更加有效地管理和查詢大規模數據,傳統商業資料庫具備該能力。MySQL支持分區表,與傳統商業資料庫相比,MySQL對二級分區表 ...


本文分享自華為雲社區《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進行二級分區。

優點:

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

金融行業數據分析

應用場景:

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

優點:

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

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

總結

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

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇文章《使用 Categraf 快速建設 MySQL 監控,同時介紹夜鶯模板中心》我們已經瞭解瞭如何使用夜鶯配合 Categraf 監控 MySQL,本節我們重點看看 Redis 監控的實操方案。 Redis 監控資料 首先還是去模板中心找到 Redis 插件相關的說明和各類模板,菜單位置在:集 ...
  • 問題 MGR 中,新節點在加入時,為了與組內其它節點的數據保持一致,它會首先經歷一個分散式恢復階段。在這個階段,新節點會隨機選擇組內一個節點(Donor)來同步差異數據。 在 MySQL 8.0.17 之前,同步的方式只有一種,即基於 Binlog 的非同步複製,這種方式適用於差異數據較少或需要的 B ...
  • MDB (Lightning Memory-Mapped Database) 是一個高性能的嵌入式鍵值存儲資料庫,由Symas Corporation開發,並作為OpenLDAP項目的一部分發佈。LMDB被設計為輕量級、快速且可靠,適合在各種應用環境中使用,從伺服器端應用到移動設備和嵌入式系統。 L ...
  • 引言 隨著雲計算技術的發展,Amazon Web Services (AWS) 作為一個開放的平臺,一直在幫助開發者更好的在雲上構建和使用開源軟體,同時也與開源社區緊密合作,推動開源項目的發展。 本文主要探討2024年值得關註的一些開源軟體及其在AWS上的應用情況,希望能夠給大家參考使用! 2024 ...
  • 本文分享自天翼雲開發者社區《快照技術對比學習》,作者:z****n 1.快照的分類 根據 SNIA 的定義, 快照有全量快照 (full snapshot) 和增量快照 (incremental snapshot) 兩種類型。 2.全量快照 克隆(Clone): 與備份操作類似,克隆技術是一種數據復 ...
  • Zabbix監控 MS SqlServer2019 環境: Zabbix 7.0 LTS, sqlserver 2019 在mssql server的伺服器上安裝好agent2和插件: zabbix_agent2_plugins-7.0.0-windows-amd64.msi, 其中有mssql的必 ...
  • 前言 Oracle公司(甲骨文)是全球最大的信息管理軟體及服務供應商,成立於1977年,總部位於美國加州Redwood shore,面向全球開放oracle認證。 Oracle開發的關係資料庫產品因性能卓越而聞名,Oracle資料庫產品為財富排行榜上的前1000家公司所採用,許多大型網站也選用了Or ...
  • 一、問題發現 在一次數據遷移中,用到了INSERT INTO t1 SELECT * FROM t2這樣的 SQL 用來搬遷大表,為了提高插入效率關閉了Binlog,考慮用多線程來插入提高速度。表的類型信息和插入效率如下所示。 測試環境: Linux node-76-11 4.19.90-17.ky ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...