日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

原理概述

冷數據按行歸檔是TTL 2.0方案,基于DELETE的DML操作清理在線表中的冷數據ELETE的DML操作清理在線表中的冷數據,并將被清理的冷數據自動歸檔至OSS對象存儲。

名詞解釋

名詞

說明

冷數據

在實例中某些數據庫表幾乎沒有更新,且查詢頻率非常低的數據。

在線表

承載在線流量的業務數據表。

歸檔表

用于保存已歸檔數據的表,通常存放在高壓縮、低成本的存儲介質中,例如OSS。

TTL

全稱為“生存時間”(Time To Live),指的是數據在數據庫中所能存儲的時間長度。在此時間段之后,數據將被自動清理。

TTL表

所有設置了TTL定義的在線表。

TTL列

TTL定義中用于計算數據有效性的時間列。

背景

在實際生產中,有些業務只希望保留最近一段時間的數據(熱數據),并對于使用頻率很低且不斷積累的過期數據(冷數據)采用存儲成本更低的方式保存,同時又可以利用這些冷數據進行分析統計業務。綜上所述,業務對處理冷數據,主要有以下需求:

  • 可以定時清理冷數據。

  • 更低的冷數據存儲成本。

  • 歸檔后仍然可以供后臺業務進行分析統計。

PolarDB-X提供了冷數據歸檔(TTL)能力,可以有效地解決上述問題。

基于列存索引的冷數據歸檔

優勢

PolarDB-X結合列存索引提供了行級冷數據歸檔方案,其具有以下明顯特點:

  • 高壓縮率:列存索引針對表中每個列的數據類型選擇最優的數據壓縮算法,從而實現整表數據存儲的高壓縮率。更多信息,請參見列存索引(CCI)

  • 實時性高、強一致性:列存索引通過訂閱主實例的增量Binlog,以保持與主表的實時同步。

  • 低存儲成本:列存索引支持轉存至OSS,其存儲成本很低,具有良好的性價比。更多信息,請參見對象存儲(OSS)

  • 一體化透明HTAP能力:可以提供完全兼容MySQL的一體化透明HTAP能力,使業務能夠在同一系統中同時進行事務處理和數據分析,無需復雜的架構調整。更多信息,請參見混合負載(HTAP)

方案概述

PolarDB-X冷數據歸檔并沒有采用其它云數據庫產品常用的“一邊歸檔、一邊清理”歸檔方案,而是采用了“提前歸檔、定期清理”的歸檔方案:

  • 提前歸檔:在線表被TTL定義后,列存節點會基于該表的全量數據生成對應的列存索引,并轉存至OSS中。同時,訂閱在線表的Binlog,將增量數據也實時存入OSS中。如下圖所示:

    image
  • 定期清理:在線表的所有數據完成歸檔后,TTL提供了清理在線表中已歸檔數據的能力(具體操作,請參見TTL表過期數據清理),清理操作不會對已歸檔至OSS的數據產生任何影響。

    image

方案詳述

  • 冷數據歸檔

    在TTL 2.0中,創建TTL表對應的歸檔表時,其本質是在創建列存索引的過程,期間列存節點不僅會基于快照讀將TTL表的存量數據上傳至歸檔表的OSS存儲中,還會實時訂閱TTL表的Binlog,以此實時執行增量數據的行轉列轉換,并上傳增量更新到歸檔表的OSS存儲中。如下圖所示:

    image

    說明

    上圖歸檔階段運行的具體步驟如下:

    1. 檢查在線表是否存在TTL定義。

      在線表的TTL定義,需要您手動通過DDL設置,該過程主要用于定義過期時間列以及數據過期時間間隔。具體操作,請參見TTL表的定義及創建

    2. 為TTL表(當前在線表存在TTL定義)創建用于保存冷數據的歸檔表。具體操作,請參見歸檔表語法說明

      1. 系統自動在TTL表之上創建一個歸檔專用的列存索引(高壓縮低成本OSS存儲)。

      2. 該列存索引自動將TTL表的存量數據上傳到OSS進行存儲。

      3. 該列存索引將實時訂閱TTL表的Binlog,以實時執行增量數據的行轉列轉換,并上傳增量更新到歸檔表的OSS存儲中。

  • 冷數據清理算法

    TTL表采用的是“由遠及近分批清理”的清理算法,從最早的數據開始清理,每次只清理固定時間范圍的數據。更多信息,請參見TTL表過期數據清理

    假設當前時間為2023-10-01,在線表只需要保存最近1個月的數據,清理流程如下圖所示:

    image
    說明
    • Day 1:

      TTL定義的時間列其最小時間值為2022-10-05(MinValue),再根據清理的時間范圍(CleanupDataInterval,本例中為3個月。更多信息,請參見調整清理時間范圍。)得出本次清理的范圍為2022-10-05≤Time<2023-01-01。以此類推其他清理范圍分別是2023-01-01≤Time<2023-04-01、2023-04-01≤Time<2023-07-01、2023-07-01≤Time<2023-09-01。

    • Day 2:

      同Day 1,清理時間列滿足2023-01-01≤Time<2023-04-01條件的數據,即2023-04-01為本次清理任務的上邊界(CleanupUpperBound)。

    • Day 3:

      同Day 1,清理時間列滿足2023-04-01≤Time<2023-07-01條件的數據,即2023-07-01為本次清理任務的上邊界(CleanupUpperBound)。

    • Day 4:

      與之前略有不同,清理時間列滿足2023-07-01≤Time<2023-09-01條件的數據,時間范圍為2個月。因為上圖中假設的當前時間為2023-10-01(Now),且TTL表被設置為保留最近1個月(ExpiredDataInterval,TTL表的數據存活時間)的數據,所以本次只能清理2023-09-01之前的數據,即2023-09-01為本次清理任務的上邊界(CleanupUpperBound)。

    綜上所述,可以得出每次清理任務的上邊界(CleanupUpperBound)的計算公式為CleanupUpperBound=Min(MinValue+CleanupDataInterval,Now?ExpiredDataInterval)。

  • 歸檔表冷數據清理(可選)

    隨著時間推移歸檔表所保存的冷數據越來越多,您可能需要對歸檔表中的冷數據進行定期清理,以減少存儲壓力。冷數據被歸檔后,數據會被轉存到歸檔表的OSS存儲中。歸檔表會按TTL表中的TTL列自動進行Range分區。其原理如下圖所示:

    image
    說明

    由于歸檔表的冷數據都已按歸檔的TTL定義的列進行了Range分區,所以您可以直接使用分區變更語法(比如,刪除分區)來清理歸檔數據。具體操作,請參見刪除分區