ハイブリッドパーティションテーブルを作成して、異なるエンジンにデータを格納できます。
次の図は、ハイブリッド分割の仕組みを示しています。
ハイブリッド分割テーブルは、ホットデータをコールドデータから分離するために、異なる記憶媒体上にパーティションを格納する。 たとえば、オンプレミスの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エンジンを使用するパーティションを持つハイブリッドパーティションテーブルではサポートされていません。
INSERT
、UPDATE
、DELETE
、LOAD
。クラスターがPolarDB for MySQL 8.0.2.2.17以降を実行している場合、ハイブリッドパーティションテーブルに対してADDおよびDROP操作を実行できます。 クラスターが別のバージョンを実行している場合、ハイブリッドパーティションテーブルに対してADDまたはDROP操作を実行できません。
パラメーター
ビジネス要件に基づいて、PolarDBクラスターの パラメーター ページでパラメーターを設定できます。 下表に、各パラメーターを説明します。
パラメーター | 説明 |
loose_hybrid_partition_query_mix_engine_enabled | ハイブリッドパーティションテーブルでInnoDBエンジンを使用しないパーティションのデータをクエリするかどうかを指定します。 有効な値:
|
ハイブリッドパーティション分割テーブルの作成
既存の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にアクセスする」をご参照ください。 説明 の一時的な資格情報には、デフォルトの有効期限があります。 の一時的な資格情報の有効期限が切れた場合、次のステートメントを実行して、
|
ハイブリッド分割テーブルを作成します。 例:
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
はパーティションです。