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

PolarDB:マテリアライズドビューの作成またはリフレッシュの文のバッチ書き込み

最終更新日:May 31, 2025

PolarDB for PostgreSQL では、マテリアライズドビューの作成または更新のための文のバッチ書き込みが可能です。

前提条件

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

  • PostgreSQL 14 (リビジョンバージョン 2.0.14.9.15.0 からリビジョンバージョン 2.0.14.13.27.0)

  • PostgreSQL 11 (リビジョンバージョン 2.0.11.15.37.0 以降)

説明

背景情報

マテリアライズドビューは、クエリ結果を含むデータベースオブジェクトです。通常のビューとは異なり、マテリアライズドビューは、作成時にビュー定義とデータコピーの両方を格納します。詳細については、「CREATE 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;