本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

建立混合分區

更新時間:2024-12-26 19:55

您可以通過建立混合分區(Hybrid Partition)的方式來訪問儲存在不同引擎中的資料。

混合分區原理如下圖所示:

image

混合分區的基本原理是將分區表中的分區儲存在不同的儲存介質上,以達到冷熱資料分離管理的目的。比如將熱資料存放區在本地PFS上,冷資料存放區在OSS上,這樣可以極大地降低冷資料的儲存成本,且不影響熱資料的查詢效能,也不影響對熱資料執行DML操作。

說明

建立混合分區表功能目前處於灰階階段。如需使用,請前往配額中心,根據配額IDpolardb_mysql_hybrid_partition找到配額名稱,在對應的操作列單擊申請來開通該功能。

前提條件

  • 叢集版本需為PolarDB MySQL版8.0.2版本且Revision version為8.0.2.2.5及以上。您可以通過查詢版本號碼來確認叢集版本。

  • OSS上已存在需要建立的分區的資料檔案,且資料檔案名稱需要符合以下命名規則:

    • 副檔名和分區標記需大寫。

    • 表名和分區名與資料庫中的名稱保持一致。

    樣本:假設表t1p1分區為CSV引擎,則該分區的資料檔案命名為:t1#P#p1.CSV

注意事項

  • 建立的混合分區表至少需要包含一個在InnoDB引擎上建立的分區。

  • 建立包含二級分區的混合分區表時,一級分區的引擎必須和表的引擎保持一致,且二級分區至少需要包含一個在InnoDB引擎上建立的分區。

  • 混合分區表的分區類型目前僅支援RANGELIST 類型。

  • 暫不支援對混合分區表中的OSS分區執行DML操作(包括INSERTUPDATEDELETELOAD)。

  • 叢集版本為PolarDB MySQL版8.0.2.2.17版本及以上時,支援對混合分區表執行ADDDROP操作。其它版本暫不支援對混合分區表執行ADDDROP操作。

參數說明

使用混合分區表時,您可以根據實際使用情境在PolarDB叢集的参数配置中設定以下參數。

參數

說明

參數

說明

loose_hybrid_partition_query_mix_engine_enabled

查詢混合分區表時,是否查詢非InnoDB引擎中的分區資料。取值如下:

  • ON(預設):查詢混合分區表時,查詢非InnoDB引擎中的分區資料。

  • OFF:查詢混合分區表時,不查詢非InnoDB引擎中的分區資料。

建立混合分區

您可以通過已有的OSS Server來建立混合分區,如果當前不存在OSS Server,您可以通過以下文法來建立OSS Server:

CREATE SERVER oss_server_name
FOREIGN DATA WRAPPER oss
OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
"oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
"oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');
說明

叢集版本為PolarDB MySQL版8.0.2版本且Revision version為8.0.2.2.6及以上時,支援使用my_oss_sts_token參數。

參數說明如下表所示:

參數

類型

備忘

參數

類型

備忘

oss_server_name

字串

OSS server名稱。

說明

該參數為全域參數,且全域唯一。該參數不區分大小寫,最大長度不超過64個字元,超過64個字元的名稱會被自動截斷。您可以將OSS server名稱指定為帶引號的字串。

my_oss_endpoint

字串

OSS對應地區的網域名稱。

說明

如果是從阿里雲的主機訪問資料庫,應該使用內網網域名稱(即帶有“internal”的網域名稱),避免產生公網流量。

my_oss_bucket

字串

資料檔案所在OSS的bucket,需要通過OSS預先建立。

my_oss_access_key_id

字串

OSS帳號ID。

my_oss_access_key_secret

字串

OSS帳號KEY。

my_oss_prefix

字串

OSS路徑首碼。用於指定資料檔案的存放路徑。不能包含特殊字元,也不可為空。

my_oss_sts_token

字串

OSS臨時訪問憑證。擷取OSS臨時訪問憑證詳情請參見擷取臨時訪問憑證

說明

my_oss_sts_token參數值有預設的到期時間。如果my_oss_sts_token已到期,您需要通過以下命令重設EXTRA_SERVER_INFO中的全部參數值。

ALTER SERVER server_name OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
"oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
"oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');

建立混合分區表,樣本如下:

CREATE TABLE t2(a1 INT, a2 VARCHAR(30), a3 VARCHAR(256))
CONNECTION = "oss_server_name"
PARTITION BY RANGE(a1)
(
   PARTITION p1 values less than (1000) ENGINE = CSV,
   PARTITION p2 values less than (2000) ENGINE = CSV,
   PARTITION p3 values less than (3000) ENGINE = INNODB
);

查詢混合分區

您可以通過以下兩種方式來查詢不同引擎的分區資料。

  • 在控制台將 hybrid_partition_query_mix_engine_enabled參數設定為ON,執行查詢語句時,查詢結果中就會包含非InnoDB分區的資料。樣本如下:

    SELECT * FROM t1;

    其中,t1表示需要查詢的混合分區表。

  • 在控制台將 hybrid_partition_query_mix_engine_enabled參數設定為OFF,查詢指定分區中的資料。樣本如下:

    SELECT * FROM t1 partition (p1);

    其中,t1表示需要查詢的混合分區表,p1表示需要查詢的分區。

  • 本頁導讀 (1, M)
  • 前提條件
  • 注意事項
  • 參數說明
  • 建立混合分區
  • 查詢混合分區
文檔反饋
phone 聯絡我們

立即和Alibaba Cloud在線服務人員進行交談,獲取您想了解的產品信息以及最新折扣。

alicare alicarealicarealicare