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

如何實現一鍵轉冷存

本文介紹一鍵轉冷存的最佳實踐。

場景描述

通過ALTER TABLE tblname SET TABLESPACE oss鎖表可以每次對單個對象進行轉存,當遇到表對象有多個索引、或者分區表有多個子分區都需要轉存至冷存中時,需要依次執行ALTER命令,操作繁瑣且容易遺漏。為了解決這類問題,PolarDB PostgreSQL版提供了一系列一鍵轉冷存的輔助函數。

創建擴展

CREATE EXTENSION IF NOT EXISTS polar_osfs_toolkit;

函數介紹

polar_alter_relation_to_oss

該函數將對象(非分區表、子分區表、索引)轉為OSS存儲。

語法

void polar_alter_relation_to_oss(text relname);

參數

參數名稱

描述

relname

對象(表\索引)名稱

說明
  • 如果是非分區表或子分區表,則會將表本身的數據轉為OSS存儲,索引數據存儲位置不變。

  • 如果是分區表,請使用polar_alter_partitioned_to_oss

  • 如果是索引,則會將該索引本身的數據轉為OSS存儲。

polar_alter_relation_to_oss_with_indexes

該函數將對象(非分區表、子分區表)及其建立的索引數據轉為OSS存儲。

語法

void polar_alter_relation_to_oss_with_indexes(text relname);

參數

參數名稱

描述

relname

表\索引名稱

說明
  • 如果是非分區表或子分區表,會將表及其建立的所有索引數據轉為OSS存儲。

  • 如果是分區表,請使用polar_alter_partitioned_to_oss

  • 如果是索引,只會將該索引對應的數據轉為OSS存儲,執行效果與polar_alter_relation_to_oss相同。

polar_alter_relation_to_oss_cascade

該函數將對象(表\索引)及其附屬對象全部轉為OSS存儲。

語法

void polar_alter_relation_to_oss_cascade(text relname);

參數

參數名稱

描述

relname

表\索引名稱

說明
  • 如果是非分區表或子分區表,會將表及其建立的所有索引數據轉為OSS存儲。

  • 如果是分區表,會將分區表本身、全局索引、子分區表及其所有索引數據一并轉為OSS存儲。

  • 如果是索引,會將該索引對應的數據轉為OSS存儲,執行效果與polar_alter_relation_to_oss相同。

polar_alter_partitioned_to_oss

該函數將分區表轉為OSS存儲。

語法

void polar_alter_partitioned_to_oss(text relname);

參數

參數名稱

描述

relname

分區表(父表)名稱

說明

該函數只用于分區表,同時只會將分區表數據轉為OSS存儲,子分區表及其索引數據存儲位置不變。由于分區表的數據實際存儲在各個子分區表中,所以本函數實際不改變數據存儲位置,只是設置分區表的默認存儲位置為OSS。

polar_alter_subpartition_to_oss

該函數將分區表的部分子分區表轉為OSS存儲,并指定保留存儲位置不變的子分區表數量。

語法

void polar_alter_subpartition_to_oss(text relname, int reserved_subparts_cnt);

參數

參數名稱

描述

relname

分區表(父表)名稱

reserved_subparts_cnt

存儲位置不變的子分區表數量

說明
  • 該函數只用于分區表,且只會將分區表子分區表數據轉為OSS存儲,子分區表上的索引數據存儲位置不變。

  • 如果reserved_subparts_cnt為0,表示將所有子分區表都轉為OSS存儲。

  • 如果reserved_subparts_cnt大于0,則按照子分區分表建立的時間順序進行排序,保留時間最近的reserved_subparts_cnt個子分區表數據存儲位置不變,其余子分區表數據轉為OSS存儲。

polar_alter_subpartition_to_oss_with_indexes

該函數將分區表的部分子分區表及其索引轉為OSS存儲,并指定保留存儲位置不變的子分區表數量。

語法

void polar_alter_subpartition_to_oss_with_indexes(text relname, int reserved_subparts_cnt);

參數

參數名稱

描述

relname

分區表(父表)名稱

reserved_subparts_cnt

存儲位置不變的子分區表數量

說明
  • 該函數只用于分區表,且會將子分區表及其所有索引數據轉為OSS存儲。

  • 如果reserved_subparts_cnt為0,表示將所有子分區表及其索引都轉為OSS存儲。

  • 如果reserved_subparts_cnt大于0,則按照子分區分表建立的時間順序進行排序,保留時間最近的reserved_subparts_cnt個子分區表數據存儲位置不變,其余子分區表及其索引數據轉為OSS存儲。

polar_alter_subpartition_to_oss_interval

該函數將分區表的歷史子分區表轉為OSS存儲。

語法

void polar_alter_subpartition_to_oss_interval(text relname, interval tm_inter_value, boolean by_db_time default false);

參數

參數名稱

描述

relname

分區表(父表)名稱。

tm_inter_value

時間間隔值,判斷為歷史子分區的依據,例如'1 day'、'1 mon'、'5 hours',interval類型介紹可參考Interval

by_db_time

tm_inter_value配合使用,用于確認是否使用數據庫當前時間作為判斷歷史子分區的起始時間,其后tm_inter_value的子分區為歷史分區。取值如下:

  • true:使用數據庫當前時間作為判斷歷史分區的依據。

  • false(默認):使用最近子分區表的時間起始值作為判斷歷史分區的依據。

說明
  • 只適用于按時間分區的分區表,將所有時間超過tm_inter_value的子分區表及索引全部轉入OSS存儲。

  • 可結合pg_cron制定按時間線自動轉冷存的方案,請參考分區表按時間線自動冷存

  • 數據庫內一個月按30天、一年按365.25天計算,所以遇到大月31天、閏年的情況需要將時間間隔值留一定的buffer。

示例

--創建按天分區的表
CREATE TABLE partition_day (
    city_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (logdate);
CREATE TABLE partition_day_y2024m06d01 PARTITION OF partition_day
    FOR VALUES FROM ('2024-06-01') TO ('2024-06-02');
CREATE TABLE partition_day_y2024m06d02 PARTITION OF partition_day
    FOR VALUES FROM ('2024-06-02') TO ('2024-06-03');
CREATE TABLE partition_day_y2024m06d03 PARTITION OF partition_day
    FOR VALUES FROM ('2024-06-03') TO ('2024-06-04');

--設定時間間隔為1 day
select polar_alter_subpartition_to_oss_interval('partition_day', '1 day'::interval);

--partition_day_y2024m06d01、partition_day_y2024m06d02兩張子分區表及索引數據全部轉存至OSS