このトピックでは、コールドデータの階層型ストレージを有効化して使用する方法について説明します。
適用範囲
バージョン要件
サポートされるリージョン
|
エリア |
リージョン |
|
中国 |
中国 (杭州) |
|
中国 (上海) |
|
|
中国 (深セン) |
|
|
中国 (北京) |
|
|
その他 |
シンガポール |
制限事項
-
コールドデータの階層型ストレージを有効にすると、無効にすることはできません。コールドデータを削除することのみ可能です。コールドデータが保存されていない場合、この機能は無料です。
-
ホットスタンバイが有効な または クラスターは、コールドデータの階層型ストレージをサポートしていません。
説明このシナリオでこの機能を有効にする必要がある場合は、お問い合わせください。
-
ご利用の または クラスターで、コールドデータの階層型ストレージとホットスタンバイの両方が有効になっている場合、することはできません。
説明このシナリオでプライマリアベイラビリティゾーンを変更する必要がある場合は、お問い合わせください。
-
サポートされていない DDL 文:
-
OSS 表領域にデータベースを作成することはできません:
CREATE DATABASE dbname TABLESPACE OSS; -
既存のデータベース全体を一度の操作で OSS 表領域に移動することはできません:
ALTER DATABASE dbname SET TABLESPACE OSS;
-
機能の有効化
コールドデータの階層型ストレージを有効にすると、PolarDB クラスターが再起動します。この操作はオフピーク時に計画し、注意して進めてください。
-
PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、クラスターをクリックします。クラスターの[リージョン]を選択し、その ID をクリックして詳細ページを開きます。
-
左側のナビゲーションウィンドウで、構成・ amp; の管理 > コールドデータ階層化ストレージ を選択して、PolarDBコールドデータ階層型ストレージ ページを開きます。
-
ワンクリックで有効化 をクリックして、データアーカイブ一覧 ページに移動します。
-
このページでは、インスタンスの 基本情報 と データアーカイブ一覧 が表示されます。このリストには、テーブル全体のアーカイブリスト と パーティションテーブルアーカイブリスト が含まれています。
-
まだコールドデータが保存されていない場合、データアーカイブ一覧 は空です。
-
この機能を有効にした後、データはデフォルトの高速クラウドディスクに保存されます。データをコールドストレージに移動するには、明示的に Object Storage Service (OSS) に転送する必要があります。詳細な手順については、「コールドストレージへのデータ移動方法」をご参照ください。
コールドストレージへのデータ移動方法
データをコールドストレージに移動すると、テーブル、インデックス、マテリアライズドビューなどのデータベースオブジェクトが OSS に転送されます。このプロセスにより、オブジェクトはクラウドディスクの容量を大幅に消費しなくなるため、ストレージコストを大幅に削減できます。データ移動後も、すべての DML および DQL 文は透過的にデータに対して操作を継続できます。
テーブル、インデックス、マテリアライズドビューの移動
-
既存のテーブル、インデックス、またはマテリアライズドビューをコールドストレージに移動します。
ALTER TABLE tblname SET TABLESPACE OSS; ALTER INDEX idxname SET TABLESPACE OSS; ALTER Materialized View mvname SET TABLESPACE OSS;説明テーブルに対して
ALTER TABLE tblname SET TABLESPACE OSSを実行すると、デフォルトではテーブルデータのみが OSS に移動します。テーブルのインデックスを移動するには、各インデックスに対してALTER INDEX文を実行する必要があります。 -
新しいテーブル、インデックス、またはマテリアライズドビューを直接 OSS ストレージに作成します。
-
方法 1:`CREATE` 文で `TABLESPACE OSS` を指定します。
CREATE TABLE tblname (...) TABLESPACE OSS; CREATE TABLE tblname(...) TABLESPACE OSS as SELECT ...; CREATE INDEX idxname ON tblname(columnname) TABLESPACE OSS; CREAE INDEX idxname ON tblename USING GiST(columnname) TABLESPACE OSS; CREATE MATERIALIZED VIEW table_name TABLESPACE OSS AS query [ WITH [ NO ] DATA ]; -
方法 2:デフォルトの表領域を OSS 表領域に設定します。
SET default_tablespace = 'oss'; CREATE TABLE tblname (...) ; CREATE INDEX idxname ON tblname(columnname); CREAE INDEX idxname ON tblename USING GiST(columnname); CREATE MATERIALIZED VIEW table_name AS query [ WITH [ NO ] DATA ];説明デフォルトの表領域を OSS に設定すると、すべての新しいテーブル、インデックス、マテリアライズドビューが OSS に作成されます。以前の動作に戻すには、デフォルトの表領域をリセットします。
RESET default_tablespace;
-
LOB フィールドの個別コールドストレージへの移動
の LOB フィールドとは、`blob`、`text`、`json`、`jsonb`、または `array` データ型のフィールド、およびを指します。これらのフィールドには、大量のストレージ容量を消費するものの、頻繁には更新されない個々の大きなオブジェクトが含まれることがよくあります。このようなシナリオでのコスト削減を支援するため、 の `コールドデータの階層型ストレージ` 機能を使用すると、他のフィールドのストレージは変更せずに、LOB フィールドのみをコールドストレージに移動できます。単一の SQL 文を使用して LOB フィールドをコールドストレージに移動できます。具体的な使用方法は次のとおりです。
-- LOB フィールドを含むテーブルを作成します。
CREATE TABLE test_large_object(id serial, val text);
-- LOB フィールドを個別にコールドストレージに移動します。
ALTER TABLE test_large_object alter column val set (storage_type='oss');
-- LOB フィールドにデータを書き込みます。text フィールドの内容は OSS に保存されます。
INSERT INTO test_large_object(val) VALUES((SELECT string_agg(random()::text, ':') FROM generate_series(1, 10000)));
データを書き込む前に、LOB フィールドのストレージを OSS に設定してください。この変更後に追加されたデータのみが OSS に保存されます。
パーティションテーブルのコールドストレージへの移動
パーティションテーブルは、コールドストレージの一般的な候補です。特定の方法を使用して、そのストレージを管理できます。
-
パーティションテーブルのすべてのパーティションをコールドストレージに移動します。
-
方法 1:既存のパーティションを一つずつコールドストレージに移動します。
-- prt1 はパーティションテーブル (親テーブル) です。 -- prt1_p1 は prt1 のパーティションです。 -- prt1_p2 は prt1 の別のパーティションです。 -- すべてのパーティションに対して ALTER 文を実行します。 ALTER TABLE prt1_p1 SET TABLESPACE OSS; ALTER TABLE prt1_p2 SET TABLESPACE OSS; -
方法 2:親パーティションテーブルを直接 OSS 表領域に作成します。
CREATE TABLE prt1 (a int, b int) PARTITION BY RANGE(a) TABLESPACE OSS; -- パーティションはデフォルトで親テーブルから表領域プロパティを継承し、OSS 表領域に作成されます。 CREATE TABLE prt1_p1 PARTITION OF prt1 FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_p2 PARTITION OF prt1 FOR VALUES FROM (250) TO (500); -
方法 3:デフォルトの表領域を OSS 表領域に設定してから、パーティションテーブルを作成します。
SET default_tablespace = 'oss'; CREATE TABLE prt1 (a int, b int) PARTITION BY RANGE(a); CREATE TABLE prt1_p1 PARTITION OF prt1 FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_p2 PARTITION OF prt1 FOR VALUES FROM (250) TO (500);
-
-
特定のパーティションをコールドストレージに移動します。
期限切れの (アクセス頻度の低い) パーティションのみをコールドストレージに移動する必要がある場合は、それらの特定のパーティションの表領域を直接変更できます。アクティブな (アクセス頻度の高い) パーティションはクラウドディスク上に残ります。このアプローチにより、パーティションテーブルのクエリパフォーマンスを維持しながら、ストレージコストを削減できます。
-- prt1 はパーティションテーブル (親テーブル) です。 -- prt1_p1 は prt1 のアクティブパーティションです。 -- prt1_p2 は prt1 の期限切れパーティションです。 -- 期限切れパーティションに対して ALTER 文を実行します。 ALTER TABLE prt1_p2 SET TABLESPACE OSS;
データ階層の管理
マテリアライズドキャッシュ
polar_smgrcache_size パラメーターを変更することで、マテリアライズドキャッシュのサイズを設定できます。
-
PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。クラスターの [リージョン] を選択し、その ID をクリックして詳細ページを開きます。
-
左側のナビゲーションウィンドウで、構成・ amp; の管理 > パラメータ設定 を選択し、
polar_smgrcache_sizeパラメーターを見つけ、[パラメーターの変更] をクリックします。 -
polar_smgrcache_sizeパラメーターを設定します。例については、次の表をご参照ください。値
キャッシュサイズ
0
0 (キャッシュは無効になります。)
1
1 GB
2
2 GB
128
128 GB (サポートされる最大値)
-
左上隅で、変更を送信 をクリックします。表示される 変更内容の保存 ダイアログボックスで、確定 をクリックします。このパラメーターを変更すると、クラスターが再起動します。
-
デフォルトでは、コールドデータの階層型ストレージを有効にすると、 または はクラウドディスク上に少量のマテリアライズドキャッシュ領域を割り当てます。この領域は、メタデータの保存と I/O 操作のマージに使用されます。より高いパフォーマンスを得るために、データ量とワークロードに基づいてコンソールでマテリアライズドキャッシュのサイズを調整できます。変更はデータベースの再起動後すぐに有効になります。
-
polar_smgrcache_sizeパラメーターを 0 に設定すると、マテリアライズドキャッシュが無効になります。これにより、クラッシュリカバリーが大幅に遅くなる可能性があり、再起動中にこのパラメーターを再度有効にすることはできません。この場合、お問い合わせいただくことで、クラッシュリカバリーを高速化するためにキャッシュを再度有効にできます。
マテリアライズドキャッシュを有効にした後、次のようにその使用状況をクエリできます。
-- 拡張を作成します。
CREATE extension polar_monitor;
-- マテリアライズドキャッシュの基本的な使用状況をクエリします。
SELECT * FROM polar_smgrcaches;
-- フィールドの説明:
-- smgrcache: キャッシュ ID。
-- relfilenode: キャッシュが対応するテーブルファイル。
-- relchunknumber: テーブルファイル内でのキャッシュの位置。
-- nblocks: キャッシュのサイズ。
-- dirty: キャッシュがダーティかどうかを指定します。
-- usagecount: 使用回数。
-- pinning_backends: 参照カウント。
-- マテリアライズドキャッシュを強制的に OSS にフラッシュします。
SELECT polar_flush_smgrcache();
-- マテリアライズドキャッシュを強制的に退避させます。
SELECT polar_evict_smgrcache();
コールドデータへのアクセス
コールドデータの挿入、削除、更新、クエリ
データの挿入、削除、更新、クエリのための標準 SQL 文は、コールドデータ (OSS 表領域に保存されているオブジェクト) に対して透過的に機能します。
コールドデータの復元
データは OSS に移動される際に圧縮されます。OSS からクラウドディスクにデータを復元する場合は、クラウドディスクに十分な容量があることを確認してください。必要な容量は、通常、データが OSS で占有するストレージ容量の 1.4 倍から 4 倍です。
コールドデータの削除
コールドテーブル、インデックス、マテリアライズドビューを削除するための標準 SQL 文は透過的に機能します。
DELETE FROM tblname WHERE ...;
TRUNCATE TABLE tblname;
DROP TABLE tblname;
...