すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ハイブリッドパーティション分割テーブルの作成

最終更新日:May 29, 2024

ハイブリッドパーティションテーブルを作成して、異なるエンジンにデータを格納できます。

次の図は、ハイブリッド分割の仕組みを示しています。

image

ハイブリッド分割テーブルは、ホットデータをコールドデータから分離するために、異なる記憶媒体上にパーティションを格納する。 たとえば、オンプレミスのPolarFileSystemにホットデータを保存し、Object Storage Service (OSS) にコールドデータを保存できます。 これにより、ホットデータのクエリのパフォーマンスを低下させたり、ホットデータに対するDML操作に影響を与えたりすることなく、コールドデータのストレージコストを大幅に削減できます。

説明

この特徴はカナリア放出期にある。 この機能を使用するには、クォータセンターに移動し、クォータID polardb_mysql_hybrid_partitionを使用して対応するクォータを検索し、[操作] 列の [適用] をクリックします。

前提条件

  • クラスターは、リビジョンバージョンが8.0.2.2.5以降のPolarDB for MySQL 8.0.2を実行します。 クラスターバージョンの確認方法については、「エンジンバージョン」トピックの「エンジンバージョンの照会」セクションを参照してください。

  • 作成するパーティションのデータファイルは、OSSに既に存在しています。 データファイルの名前は、次の要件に準拠しています。

    • ファイル名拡張子とパーティションマーカーは大文字です。

    • テーブル名とパーティション名はデータベースのものと同じです。

    例: テーブルt1のパーティションp1がCSVエンジンを使用している場合、パーティションのデータファイルの名前はt1#P#p1.CSVです。

注意事項

  • ハイブリッドパーティションテーブルには、InnoDBエンジンを使用するパーティションが少なくとも1つ含まれている必要があります。

  • サブパーティションを含むハイブリッドパーティションテーブルを作成する場合、パーティションはテーブルと同じエンジンを使用する必要があり、少なくとも1つのサブパーティションはInnoDBエンジンを使用する必要があります。

  • ハイブリッドパーティションテーブルは、RANGEおよびLISTデータ型のみをサポートします。

  • 次のDML文は、OSSエンジンを使用するパーティションを持つハイブリッドパーティションテーブルではサポートされていません。INSERTUPDATEDELETELOAD

  • クラスターがPolarDB for MySQL 8.0.2.2.17以降を実行している場合、ハイブリッドパーティションテーブルに対してADDおよびDROP操作を実行できます。 クラスターが別のバージョンを実行している場合、ハイブリッドパーティションテーブルに対してADDまたはDROP操作を実行できません。

パラメーター

ビジネス要件に基づいて、PolarDBクラスターの パラメーター ページでパラメーターを設定できます。 下表に、各パラメーターを説明します。

パラメーター

説明

loose_hybrid_partition_query_mix_engine_enabled

ハイブリッドパーティションテーブルでInnoDBエンジンを使用しないパーティションのデータをクエリするかどうかを指定します。 有効な値:

  • ON (デフォルト)

  • オフ

ハイブリッドパーティション分割テーブルの作成

既存のOSSサーバーを使用して、ハイブリッドパーティションテーブルを作成できます。 OSSサーバーが存在しない場合は、次のステートメントを実行してOSSサーバーを作成できます。

CREATE SERVER oss_server_name
外国データラッパーoss
オプション (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>"}'); 
説明

リビジョンバージョンが8.0.2.2.6以降のPolarDB for MySQL V8.0.2を実行するクラスターのみが、my_oss_sts_tokenパラメーターをサポートしています。

次の表に、上記のステートメントのパラメーターを示します。

パラメーター

データ型

説明

oss_server_name

String

OSSサーバーの名前。

説明

名前はグローバルに一意である必要があります。 名前の長さは最大64文字で、大文字と小文字は区別されません。 64文字を超える名前は自動的に切り捨てられます。 OSSサーバー名を引用符で囲まれた文字列として指定できます。

my_oss_endpoint

String

OSSサーバーのエンドポイント。

説明

Alibaba Cloudサーバーからデータベースにアクセスする場合は、インターナルエンドポイントを使用して、インターネットトラフィックの発生を回避します。 内部エンドポイントにはキーワード "internal" が含まれています。

my_oss_bucket

String

データファイルが保存されるバケット。 データをインポートする前に、OSSバケットを作成する必要があります。

my_oss_access_key_id

String

OSSへのアクセスに使用されるアカウントのAccessKey ID。

my_oss_access_key_secret

String

OSSへのアクセスに使用されるアカウントのAccessKeyシークレット。

my_oss_prefix

String

OSSパスのプレフィックス。 このパラメーターは、データファイルのストレージパスを指定します。 パラメーター値に特殊文字を含めることはできません。 パラメーターを空のままにすることはできません。

my_oss_sts_token

String

OSSへのアクセスに使用される一時的な資格情報。 OSSへのアクセスに使用される一時的な資格情報を取得する方法については、「STSが提供する一時的な資格情報を使用してOSSにアクセスする」をご参照ください。

説明

の一時的な資格情報には、デフォルトの有効期限があります。 の一時的な資格情報の有効期限が切れた場合、次のステートメントを実行して、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"
範囲によるパーティー (a1)
(
   PARTITION p1の値が (1000) エンジン=CSV、
   PARTITION p2の値が (2000) エンジン=CSV、
   PARTITION p3未満の値 (3000) ENGINE = INNODB
); 

ハイブリッドパーティション分割テーブルのデータの照会

次のいずれかの方法を使用して、異なるエンジンを使用するパーティションのデータをクエリできます。

  • コンソールでhybrid_partition_query_mix_engine_enabledパラメーターをONに設定した場合、クエリ結果にはInnoDBエンジンを使用しないパーティションのデータが含まれます。 例:

    SELECT * からt1;

    t1はハイブリッド分割テーブルです。

  • コンソールでhybrid_partition_query_mix_engine_enabledパラメーターをOFFに設定すると、指定したパーティションのデータをクエリできます。 例:

    SELECT * FROM t1パーティション (p1);

    t1はハイブリッド分割テーブルです。 p1はパーティションです。