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

數據存儲冷熱分離

更新時間:

云原生數據倉庫 AnalyticDB MySQL 版彈性模式集群版(新版)(3.1.3.3及以上版本)支持表或分區級別的數據存儲冷熱分離策略。

前提條件

AnalyticDB for MySQL集群需要同時滿足以下條件:

  • 集群系列需為彈性模式集群版(新版)

  • 集群內核版本需為3.1.3.3或以上。

    說明
    • 如何查看集群版本,請參見查看版本

    • 如需升級版本請提交工單并提供可升級的時間。升級版本耗時約20分鐘。升級期間,您的集群仍可以正常運行,但升級過程中會出現閃斷,建議您在業務低峰期升級,或確保您的應用有自動重連機制。

費用說明

集群在使用過程中,存儲熱數據和冷數據占用的存儲空間會按量收費。詳情請參見數倉版計費項數倉版產品定價

說明

包年包月集群可以購買存儲資源包來抵扣熱數據存儲空間和冷數據存儲空間。超出存儲資源包的部分按量付費。詳情請參見存儲資源包

存儲策略

AnalyticDB for MySQL的數據存儲冷熱分離策略分為全冷存儲、全熱存儲、冷熱混合存儲。

  • 全冷存儲指數據全部存儲在OSS中,是一種較為經濟的存儲策略。

    說明

    AnalyticDB for MySQL的冷數據采用OSS本地冗余存儲(單AZ)。

  • 全熱存儲指數據全部存儲在SSD盤,滿足高性能訪問的需求。

  • 冷熱混合存儲指一定數量的分區存儲在SSD盤,其余數據存儲在OSS中。

image.png

指定冷熱存儲策略

在執行CREATE TABLE時,您可以通過storage_policy參數來指定表的數據存儲冷熱分離策略。

對于已有的表,可以通過ALTER TABLE table_name storage_policy;修改表的冷熱存儲策略。詳情請參見存儲策略

冷熱混合存儲原理

冷熱混合存儲需要首先指定熱分區數。您可以通過hot_partition_count參數來指定熱分區數。如何通過hot_partition_count設置熱分區數,請參見CREATE TABLE

假設熱分區數為N,數據存儲冷熱分離策略會按照分區的大小(指定分區列數據的數據值大小)降序排序,最大的N個分區為熱分區,存儲在SSD盤,其余分區為冷分區,存儲在OSS中,形成冷熱分區布局。

例如熱分區數為4,分區包含20201110、20201109、20201108、20201107、20201106、20201105和20201104,數據存儲冷熱分離策略會將最大的4個分區20201110、20201109、20201108和20201107指定為熱分區,剩余分區為冷分區。

冷熱分區布局不是固定不變的。以下情況會影響冷熱分區布局:

數據變更對冷熱分區布局的影響

當有新的分區數據寫入時,數據存儲冷熱分離策略會對所有分區重新排序,超過N的舊數據會遷移到冷分區。

如圖所示,當新增分區20201110之后,20201110為當前最大的分區,應該放在熱分區中,但是當前熱分區數已滿5,數據存儲冷熱分離策略會從熱分區中選一個最小的分區20201105遷移到冷分區,并把20201110放在熱分區中。熱冷遷移

變更熱分區數量對冷熱分區布局的影響

當前熱分區數為N,修改熱分區的數量為M。

  • 當熱分區數增加,即M>N時,會從冷分區遷移M-N個分區數據到熱分區。

    如圖所示,當前熱分區數為5, 修改熱分區數為6后,數據存儲冷熱分離策略會從冷分區遷移一個最大的分區20201104到熱分區中。冷熱遷移

  • 當熱分區數減少,即M<N時,會從熱分區遷移N-M個分區數據到冷分區。

    例如,當前熱分區數為5, 修改熱分區數為4后,數據存儲冷熱分離策略會從熱分區遷移一個最小的分區到冷分區中。

查詢數據存儲冷熱分離布局

您可以通過查詢表table_usage,來查看當前的冷熱數據存儲情況。具體使用方式如下:

  • 查詢所有表的冷熱數據存儲情況:

    select * from information_schema.table_usage;
  • 查詢單個表的冷熱數據存儲情況:

    select * from information_schema.table_usage where table_schema='<schema_name>' and table_name='<table_name>';

table_usage表字段信息:

字段名

字段含義描述

table_schema

數據庫名。

table_name

表名。

storage_policy

存儲策略:

  • HOT:全熱存儲。

  • COLD:全冷存儲。

  • MIXED:冷熱混合存儲。

hot_partition_count

熱分區數量。

cold_partition_count

冷分區數量。

rt_total_size

實時數據總量(單位:Byte),是rt_data_sizert_index_size的總和。

rt_data_size

實時數據量(單位:Byte)。

rt_index_size

實時數據的主鍵和索引大小(單位:Byte)。

hot_total_size

熱分區總數據量(單位:Byte),是hot_data_sizehot_index_size的總和。

hot_data_size

熱分區的數據量(單位:Byte)。

hot_index_size

熱分區數據的主鍵和索引大小(單位:Byte)。

cold_total_size

冷分區總數據量(單位:Byte),是cold_data_sizecold_index_size的總和。

cold_data_size

冷分區的數據量(單位:Byte)。

cold_index_size

冷分區數據的主鍵和索引大小(單位:Byte)。

table_usage表說明:

  • table_usage是實時更新的,隨著insert/update/delete/build的執行,rt_total_sizert_data_sizert_index_sizehot_total_sizehot_data_sizehot_index_sizecold_total_sizecold_data_sizecold_index_size會實時變動。

  • 如果加載數據之后hot_total_sizecold_total_size都為0,則表示數據還在實時中,rt_total_size為實時數據的存儲,可以通過執行build語句,將實時數據轉換為分區數據,待build完成后可以查到hot_total_sizecold_total_size

    build指令:

    build table <table_name>;
  • 由于用戶定義的hot_partition_count是單個shard內二級分區的熱分區存儲情況,而table_usage表查詢到的hot_partition_count是按照shard union之后的結果,在各shard內分區數據不一致的情況下,可能會出現table_usage表中查詢到的hot_partition_count大于用戶定義的hot_partition_count

    例如:tableA有兩個shard(shard1和shard2),并且定義了hot_partition_count=2,此時shard內的數據分布情況如下圖。shard

    shard1:熱分區為P4、P5,冷分區為P1、P2、P3。

    shard2:熱分區為P3、P4,冷分區為P1、P2。

    最終計算的實際熱分區為(P4、P5)Union(P3、P4)=(P3、P4、P5),因此實際hot_partition_count=3。

查詢冷熱變更進度

您可以通過執行ALTER TABLE語句修改表的數據存儲冷熱分離策略,詳細信息請參見ALTER TABLE。您可以通過查詢表storage_policy_modify_progress來查看冷熱變更進度。

  • 查詢當前集群中所有參與變更的表的冷熱變更進度,語句如下:

    select * from information_schema.storage_policy_modify_progress;
  • 查詢單個表的冷熱變更進度,語句如下:

    select * from information_schema.storage_policy_modify_progress where table_schema='<schema_name>' and table_name='<table_name>';

storage_policy_modify_progress表字段信息:

字段名

字段含義描述

table_schema

數據庫名。

table_name

表名。

task_id

執行冷熱變更任務的ID。

source_storage_policy

原存儲策略:

  • HOT:全熱存儲。

  • COLD:全冷存儲。

  • MIXED:冷熱混合存儲。

source_hot_partition_count

原熱分區數量。

dest_storage_policy

目標存儲策略:

  • HOT:全熱存儲。

  • COLD:全冷存儲。

  • MIXED:冷熱混合存儲。

dest_hot_partition_count

目標熱分區數量。

hot_to_cold_partition_count

熱到冷變更的分區數量。

cold_to_hot_partition_count

冷到熱變更的分區數量。

hot_to_cold_data_size

熱到冷變更的數據量(單位:Byte)。

cold_to_hot_data_size

冷到熱變更的數據量(單位:Byte)。

hot_data_size_before_change

變更前熱數據量(單位:Byte)。

cold_data_size_before_change

變更前冷數據量(單位:Byte)。

hot_data_size_after_change

變更后熱數據量(單位:Byte)。

cold_data_size_after_change

變更后冷數據量(單位:Byte)。

start_time

開始變更時間。

update_time

結束變更時間。

progress

變更進度(單位:百分比)。

status

變更狀態:

  • INIT:未開始變更。

  • RUNNING:正在進行變更。

  • FINISH:變更完成。