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

PolarDB:マテリアライズド・ビューを作成または更新するためのステートメントの一括書き込み

最終更新日:Jun 27, 2024

PolarDB for PostgreSQL を使用すると、マテリアライズドビューを作成または更新するための書き込みステートメントをバッチ処理できます。

前提条件

この機能は、次のエンジンを実行するPolarDB for PostgreSQLクラスターでサポートされています。

PostgreSQL 14 (バージョン14.9.15.0以降)

説明

次のステートメントを実行して、PolarDB for PostgreSQLクラスターのマイナーバージョンを表示できます。

PostgreSQL 14

select version();

背景情報

マテリアライズドビューは、クエリ結果を含むデータベースオブジェクトです。 通常のビューとは異なり、マテリアライズドビューは、作成時にビュー定義とデータコピーの両方を格納します。 詳細については、「MATERIALIZED VIEWの作成」をご参照ください。 マテリアライズドビューのデータがビュー定義のデータと一致しない場合は、マテリアライズドビューを更新してデータの一貫性を保つことができます。 詳細については、「REFRESH MATERIALIZED VIEW」をご参照ください。 マテリアライズドビューは、基本的にビュー定義の事前計算クエリで、クエリ中に再利用できるようにします。

CREATE TABLE ASステートメントは、クエリの結果から新しいテーブルを定義します。 テーブルの構造は、クエリの出力列と同じです。

SELECT INTOステートメントは、新しいテーブルを作成し、クエリによって計算されたデータを設定します。 データはクライアントに返されません。 新しいテーブルの構造は、クエリの出力列とまったく同じです。

仕組み

PostgreSQLカーネルは、マテリアライズド・ビュー (CREATE materialized view) を作成し、マテリアライズド・ビュー (REFRESH MATERIALIZED VIEW) を更新するためのステートメントと、CREATE TABLE ASおよびSELECT INTOステートメントと同じコード・ロジックのセットを使用します。 次のステップは通常含まれています:

  1. データスキャン: ビュー定義またはCREATE TABLE ASまたはSELECT INTOステートメントで指定されたクエリを実行して、条件を満たすデータをスキャンします。

  2. データ書き込み: 前の手順でスキャンしたデータを新しいマテリアライズドビューまたは新しいテーブルに書き込みます。

データの書き込み手順を最適化するために、PolarDB for PostgreSQL はバッチ書き込みを導入します。 大量のデータを書き込む場合には、メモリに蓄積された一定数のタプルが一度にテーブルまたはマテリアライズドビューに書き込まれる。 これにより、WALログを記録するためのオーバーヘッドとページをロックする頻度が削減され、DDLの実行時間が大幅に短縮されます。

使用法

この機能を有効にするには、polar_enable_create_table_as_bulk_insertパラメーターをONに設定します。 デフォルト値はONです。

SET polar_enable_create_table_as_bulk_insert TO ON;