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

Hologres:デフォルト動作の変更

最終更新日:Dec 23, 2025

このトピックでは、Hologres の各バージョンにおけるデフォルトの動作の変更について説明します。

説明

パラメータ名は下位互換性があります。 後のバージョンでパラメータの名前が変更された場合でも、パラメータの元の名前を使用できます。 ただし、新しいパラメータ名を使用することをお勧めします。

V4.0 (2025 年 9 月)

2025 年 11 月

  • 全文転置インデックスとリアルタイムデータ書き込み:

    • V4.0.8 以前:データ書き込みと同時にインデックス作成が発生します。

    • V4.0.8 以降:インメモリインデックスが 1 秒ごとにリフレッシュされ、効率的な書き込みとインデックス経由での即時データアクセシビリティが保証されます。

  • Hologres V4.0.7 以降の動的テーブルの動作:

    • 動的テーブルのリフレッシュが仮想ウェアハウスリソースをサポートするようになりました。

    • 動的テーブルリフレッシュのデフォルトリソースは、V3.1、V3.2、および V4.0.1-4.0.6 と比較して変更されました。詳細については、「動的テーブルのリフレッシュリソースの設定」をご参照ください。

2025 年 9 月

  • 高性能クエリチャネル:Hologres V4.0 以降のインスタンスでは、デフォルトで Common Table を使用して MaxCompute 外部テーブルをクエリするようになりました。この新しいメソッドは、パフォーマンスを大幅に向上させ、MaxCompute Delta Table と Append 2.0 Table をサポートします。詳細については、「Common Table リンクを介した MaxCompute へのアクセス」をご参照ください。

  • データ鮮度の向上:Hologres V4.0 以降、MaxCompute から Hologres に直接アクセスする場合、デフォルトのデータ鮮度は 1 分です。データ鮮度を手動で変更するには、次のコマンドを使用します:

    -- DB レベルで鮮度を変更
    ALTER DATABASE <database_name> set hg_create_table_snapshot_default_freshness_in_sec=xxx;
  • サーバーレスコンパクション: The hg_serverless_computing_run_compaction_before_commit_bulk_load パラメーターはデフォルトで有効になっており、サーバーレスの一括ロード中にコンパクションを同期的に実行して、インスタンスリソースへの影響を軽減します。 詳細については、「サーバーレスコンピューティングを使用した同時コンパクション」をご参照ください。

  • 柔軟な DLF テーブルフォーマット: Data Lake Formation (DLF) で CREATE EXTERNAL TABLE を使用してテーブルを作成する場合、デフォルトのテーブルフォーマット (以前は ORC) は、Paimon SDK によって動的に決定されるようになりました。詳細については、CREATE EXTERNAL TABLE をご参照ください。

  • PQE メモリ保護: PQE を使用して SQL 文を実行するためのシングルノードメモリ保護を実装します。このメカニズムは、クエリがインスタンスの安定性に影響を与える可能性がある場合に OOM エラーをスローします。

  • 動的テーブルの適応型実行:Hologres V4.0 以降、完全リフレッシュモードの動的テーブルでは、デフォルトで適応型実行が使用されるようになりました。これにより、大規模なワークロードのピークリソース消費が削減され、ワークロードの安定性が向上します。リソース消費をより正確に推定してコストを節約します。適応型実行は、実行中に最適でないクエリプランを最適化し、不正確な統計情報による失敗を防ぎます。

V3.2 (2025 年 7 月)

  • BranchOverwriteParameterTag などの非予約キーワードが追加され、LambdaQualify などの予約キーワードが追加されました。キーワードの詳細については、PostgreSQL キーワードをご参照ください。

  • Hologres V3.2 以降、CTE の適応最適化がサポートされています。CTE のマテリアライズ戦略は、optimizer_cte_inlininghg_cte_strategy の 2 つの GUC パラメーターによって決定されます。これらのパラメーターは互いに独立しており、設定順序に関係なく個別に設定できます。動作は次のとおりです。

    • optimizer_cte_inlining = off の場合、hg_cte_strategy の設定に関係なく、CTE は再利用されます。

    • optimizer_cte_inlining = on の場合、CTE は強制的にインライン化されなくなります。CTE ポリシーは hg_cte_strategy によって決定されます。

      • hg_cte_strategy = auto (デフォルト) の場合、クエリ オプティマイザー (QO) は、その複雑さなどの要因に基づいて、CTE をインライン化するか再利用するかを自動的に選択します。

      • hg_cte_strategy = inlining の場合、CTE は強制的にインライン化されます。

      • hg_cte_strategy = reuse の場合、CTE は強制的に再利用されます。

V3.1 (2025 年 5 月)

  • 動的テーブル:

    • 構文

      Hologres V3.1 以降、動的テーブルはより簡潔な新しい構文を使用します。 V3.0 で作成された動的テーブルを V3.1 にアップグレードした後、完全データリフレッシュを使用するテーブルに対しては ALTER 操作のみを実行できます。 新しいテーブルを作成するには、V3.1 の新しい構文を使用する必要があります。 増分データリフレッシュを使用するテーブルの場合は、新しい構文を使用してテーブルを再作成する必要があります。 詳細については、「CREATE DYNAMIC TABLE」をご参照ください。

    • リソース使用量

      • リソースのリフレッシュ

        Hologres V3.1 で作成された動的テーブルは、デフォルトでサーバーレスコンピューティングリソースを使用してタスクを実行します。現在のインスタンスでサーバーレスコンピューティングが有効になっていない場合、自動的にインスタンスリソースにフォールバックします。Hologres V3.0 で作成されたテーブルは、テーブル作成時に指定されたリソースを引き続き使用します。詳細については、「CREATE DYNAMIC TABLE」をご参照ください。

      • インスタンスリソースを使用したテーブルの作成

        • 新しい構文 (Hologres V3.1 および V3.2): ベーステーブルと動的テーブルのテーブルグループのプライマリ仮想ウェアハウスが使用されます。

        • 古い構文 (Hologres V3.0) と新しい構文 (Hologres V4.1): 動的テーブルのテーブルグループのプライマリ仮想ウェアハウスが使用されます。

    • 接続数

      新しい構文は、各動的テーブルに追加の接続を維持することで安定性を高め、タスクをより効率的に調整します。インスタンスの接続使用率が高く、数百の動的テーブルが含まれている場合は、潜在的な問題を軽減するためにアイドル接続を削除することをお勧めします。

    • ベーステーブルから増分データを読み取るメソッド

      Hologres V3.1 以降では、ストリームメソッドを使用してベーステーブルへのデータ変更を識別します。 バイナリロギングと比較して、ストリームメソッドはパフォーマンスが高く、費用対効果が高くなっています。 インスタンスが V3.1 にアップグレードされると、デフォルトでストリームメソッドが使用されます。 V3.0 でテーブルのバイナリロギングが有効になっている場合は、追加のストレージコストが発生しないように、速やかにバイナリロギングを無効にしてください。 詳細については、「動的テーブル」をご参照ください。

  • クエリキュー 機能はベータフェーズを完了し、本番環境で使用できるようになりました。 詳細については、「クエリキュー」をご参照ください。

  • TRUNCATE は DML 文 (DDL から) になり、FE ノードの負荷を軽減します。DDL の動作に戻すには、hg_enable_truncate_as_dml GUC パラメーターを無効にします。ただし、バイナリログが有効になっているテーブルで TRUNCATE 操作を実行する場合は、セッションレベルでバイナリログを無効にする必要があります。詳細については、「TRUNCATE」をご参照ください。

  • COPY を使用してプライマリキーを持つテーブルにデータをインポートする場合、GUC パラメーター hg_experimental_copy_enable_on_conflict はデフォルトで有効になっています。これにより、プライマリキーを持つテーブルにデータをインポートするときにデータ更新ポリシーを設定できます。詳細については、「COPY」をご参照ください。

  • hg_insert_overwrite 機能を使用する場合、SQL ステートメント (標準 SELECT ステートメント) で指定された列の数とデータ型は、ターゲットテーブル (Hologres 内部テーブル) の列の数とデータ型と厳密に一致する必要があります。 そうでない場合、error: table "hg_alias" has x columns available but x columns specified または error: column xx is of type xxx but expression is of type xxx エラーメッセージが報告されます。 詳細については、「INSERT OVERWRITE」をご参照ください。

  • システムテーブル hg_table_storage_status が更新されました。 Hologres V3.1 以降、システムテーブルにはメモリに格納されているテーブルデータ (メモリテーブル) は含まれなくなりました。 代わりに、テーブルの実際の物理ストレージのみが反映されます。 メモリテーブルメカニズムの詳細については、「INSERT」をご参照ください。

  • 非予約キーワードが追加されました: asynclogicalpurgerecoverrebuildresume、および suspend。「PostgreSQL キーワード」をご参照ください。

V3.0

2025 年 4 月

Hologres V3.0.33 以降、インスタンスで使用可能なサーバーレスコンピューティングリソースの上限が、インスタンスの専用コンピューティングリソースの 3 倍から 5 倍に引き上げられました。 上限は 2,048 CU を超えることはできません。 詳細については、「サーバーレスコンピューティングのユーザーガイド」をご参照ください。

2025 年 2 月

  • Hologres V3.0.23 以降、必要な権限のないユーザーは、データベース、スキーマ、およびテーブルのメタデータをクエリできません。 BI ツールまたはその他のツールを Hologres インスタンスに接続すると、承認されていないアクセスに対して権限がないことを示すメッセージが表示されます。

  • Hologres V3.0 以降、LIMIT -1 を含む SQL ステートメントはサポートされていません。 LIMIT -1 を含む SQL ステートメントを実行すると、ERROR: LIMIT must not be negative が報告されます。

  • Hologres V3.0.19 以降、データセキュリティを強化するために、データマスキングが有効になっているデータベースでは、デフォルトでバイナリログを使用できません。Replication does not support hologres anon now, could choose to turn off hg_anon_enable for current user というエラーメッセージが、バイナリログの使用時に報告されます。ユーザーがバイナリログを使用できるようにするには、次のいずれかの文を実行して、ユーザーのデータマスキングを無効にする必要があります。

    重要

    システムは、hg_anon_enable の設定のみに基づいて、バイナリログの使用が許可されているかどうかを確認します。 unmasked などのデータマスキングルールを構成することによって、バイナリログの使用を有効にすることはできません。

    -- ユーザーのデータマスキングを無効にします。
    ALTER ROLE "<user>" SET hg_anon_enable = OFF;
    
    -- 特定のデータベースでユーザーのデータマスキングを無効にします。
    ALTER ROLE "<user>" IN DATABASE <database> SET hg_anon_enable = OFF;

2024 年 11 月

固定プランのフィルタ条件の組み合わせの上限は 500,000 です。 この制限を超えると、実行は Hologres Query Engine(HQE)にダウングレードされます。 フィルタ条件の値の説明:

WHERE (pk1 = 1 AND pk2 = 1) OR (pk1 = 2 AND pk2 = 2) OR (pk1 = 3 AND pk2 = 3)-- この例の組み合わせの数は 3 です。
    
WHERE pk1 IN (1, 2, 3) AND pk2 IN (1,2,3)-- この例の組み合わせの数は 9 です。 式: 3 × 3 = 9。

2024 年 9 月

  • SQL ヒント機能のパブリックプレビューが完了し、この機能は本番環境で使用できます。デフォルトでは、この機能は有効になっています。

  • メタデータウェアハウスでは、COPY 操作に対して 1 つのレコードではなく 2 つのレコードが生成されます。詳細については、「COPY」をご参照ください。

  • Hologres V3.0.10 以降、仮想ウェアハウスインスタンスの各仮想ウェアハウスの最大計算ユニット (CU) 数が 512 から 1024 に増加します。

V2.2

2025 年 2 月

  • Hologres V2.2.38 以降、データセキュリティを強化するために、データマスキングが有効になっているデータベースでは、デフォルトでバイナリログを使用できません。 バイナリログを使用しようとすると、Replication does not support hologres anon now, could choose to turn off hg_anon_enable for current user エラーメッセージが報告されます。 ユーザーがバイナリログを使用できるようにするには、次のいずれかのステートメントを実行して、ユーザーのデータマスキングを無効にする必要があります。

    重要

    システムは、hg_anon_enable の設定のみに基づいて、バイナリログの使用が許可されているかどうかを確認します。 unmasked などのデータマスキングルールを構成することによって、バイナリログの使用を有効にすることはできません。

    -- ユーザーのデータマスキングを無効にします。
    ALTER ROLE "<user>" SET hg_anon_enable = OFF;
    
    -- 特定のデータベースでユーザーのデータマスキングを無効にします。
    ALTER ROLE "<user>" IN DATABASE <database> SET hg_anon_enable = OFF;

2024 年 11 月

  • Hologres V2.2.17 以降、実行プランで使用できるメモリ空間に 4 GB (デフォルト) の制限が課せられます。 これにより、システムのメモリ不足 (OOM) のリスクを軽減できます。 SQL ステートメントの実行中に "ORCA failed to produce a plan : Used memory size xxx MB exceeds maximum size 4096 MB" エラーが報告された場合は、メモリの制限を超えています。 SQL ステートメントを簡略化することをお勧めします。 短期間で問題を解決できない場合は、次のステートメントを使用して制限を調整またはキャンセルできます。

    -- 制限を調整またはキャンセルします。 パラメータを 0 に設定すると、制限はキャンセルされます。
    ALTER DATABASE <database_name> SET hg_experimental_mp_allocated_size_limit_in_mb = 0;
  • Hologres V2.2.25 以降、仮想ウェアハウスをスケールインする場合、各ワーカーに割り当てられる読み取り専用シャードの数は 128 を超えることはできません。 これにより、OOM などの問題の頻繁な発生を防ぎます。 スケールイン後にワーカーに割り当てられたシャードの数が 128 を超えると、"The follower shard count per worker:xx should be less than or equal to the max follower shard" エラーが報告されます。 この場合、仮想ウェアハウスの元の仕様が維持されます。 次の SQL ステートメントを実行して、現在のデータベースの指定された仮想ウェアハウスのワーカーに割り当てられている読み取り専用シャードの数をクエリできます。 インスタンスに複数のデータベースがある場合は、データベース内の読み取り専用シャードの数を合計します。

    -- 現在のデータベースの init_warehouse のワーカーに割り当てられている読み取り専用シャードの数をクエリします。
    SELECT
        w.worker_id,
        count(*) AS cnt
    FROM
        hologres.hg_warehouse_table_groups t,
        hologres.hg_worker_info w
    WHERE
        t.warehouse_id = w.warehouse_id
        AND w.table_group_name = t.tablegroup_name
        AND t.leader = FALSE
        AND w.warehouse_name = 'init_warehouse'
    GROUP BY
        w.worker_id;

V2.2 (2024 年 7 月)

Java Database Connectivity(JDBC)を使用して Hologres バイナリログを使用する場合、ワーカーで使用可能な walsender の最大数が 1,000 から 600 に減少します。 walsender の数はスロットの数で計算されます。 詳細については、「JDBC を使用して Hologres バイナリログを使用する」をご参照ください。 jdbc_fixed モードを使用して Hologres バイナリログを使用することをお勧めします。 JDBC モードでのログ使用と比較して、jdbc_fixed モードでのログ使用は接続を占有せず、walsender の数の制限を受けません。 jdbc_fixed モードの詳細については、「Hologres コネクタ」をご参照ください。

V2.2 (2024 年 6 月)

Hologres V2.2 以降、スロークエリログを収集するための基盤となる機能が自動的にアップグレードされ、Hologres がスロークエリに関する詳細情報をログに記録できるようになります。 これにより、ビジネス担当者は、Hologres インスタンスで実行されるクエリのステータスに基づいてきめ細かい管理を実行できます。 スロークエリログの詳細については、「スロークエリログのクエリと分析」をご参照ください。 スロークエリログの収集は、次の点でアップグレードされます。

  • 無効な構文、プランの解析エラー、権限不足などの原因で失敗したクエリがログに記録されます。 これらのクエリは、Hologres V2.2 より前のバージョンではログに記録されません。 SQL 診断機能を使用して、失敗したクエリを管理することをお勧めします。

  • トランザクションに複数のデータ定義言語 (DDL) ステートメント (例: BEGIN; DROP TABLE xxx; COMMIT;) が含まれている場合、トランザクション全体がスロークエリのログに 1 つのクエリレコードとして記録されます。 ただし、クエリ QPS メトリックは、トランザクションを複数の DDL ステートメントとしてカウントします。 例:

    -- トランザクションで複数の DDL 文を含むクエリを開始します。
    BEGIN;
    DROP TABLE xxx;-- 実行は成功します。
    CREATE TABLE xxx -- 実行は失敗します。
    ROLLBACK;
    • 次のサンプルコードは、スロークエリログの結果を示しています。

      query_id | status  | Query
      ---------|---------|------------
      xxxx     |  FAILED |begin;drop table ;create table;rollback;
    • 次のサンプルコードは、監視システムの結果を示しています。

      クエリ QPS: 4 レコード
      失敗したクエリ QPS: 1 レコード

V2.2 (2024 年 5 月)

  • Hologres V2.2 以降、hg_dump_script によって返されるテーブルプロパティは、CALL 構文ではなく WITH 構文で表示されます。 これにより、CREATE TABLE ステートメントの利便性と可読性が向上します。 詳細については、「概要」の「テーブルスキーマをクエリする」セクションをご参照ください。

  • Hologres V2.2.7 以降、デフォルト値が 1 秒から 100 ミリ秒に変更されました。 変更後、スロークエリログは、1 秒ではなく 100 ミリ秒以上かかる SQL 文を記録します。 SQL 文には、INSERT、SELECT、UPDATE、および DELETE 文が含まれます。 詳細については、「スロークエリログのクエリと分析」をご参照ください。

  • Hologres V2.2.9 以降、固定プランを使用したキーと値のペアのポイントクエリによって返される結果は、WHERE 句のプライマリキーに基づいて順序付けられません。

    固定プランを使用したポイントクエリの例

    CREATE TABLE test_t (id INT PRIMARY key, col INT);
    INSERT INTO test_t VALUES (1,1),(2,2),(3,3);
    
    -- Hologres V2.2.9 より前のバージョンでは、返される結果は WHERE 句のプライマリキー(id)に基づいて順序付けられます。
    SELECT * FROM test_t WHERE id IN (1,2,3);
    id | col 
    ----+----- 
    1 | 1 
    2 | 2 
    3 | 3
    
    -- Hologres V2.2.9 以降では、返される結果は WHERE 句のプライマリキー(id)に基づいて順序付けられません。 各クエリによって返される結果のデータも異なる順序で表示される場合があります。
    SELECT * FROM test_t WHERE id IN (1,2,3);
    id | col 
    ----+----- 
    3 | 3 
    1 | 1 
    2 | 2

V2.2 (2024 年 4 月)

  • Hologres V2.2 以降、Hologres は外部テーブルを使用して MaxCompute にアクセスするために、デフォルトでサービスロールを使用します。 Hologres インスタンスを購入するか、Hologres インスタンスを V2.2 以降にアップグレードする場合は、サービスロールを作成し、サービスロールに権限を付与する必要があります。 サービスロールとは、信頼できるエンティティが Alibaba Cloud サービスである RAM ロールのことです。 サービスロールは、Alibaba Cloud サービス全体で承認されたアクセスを実装できます。 サービスロールは、Alibaba Cloud サービスへのアクセスに必要な権限をより適切に構成し、誤操作によるリスクを防ぐのに役立ちます。 詳細については、「Hologres のサービスロール」をご参照ください。

  • Hologres V2.2 以降、デフォルトのオプティマイザポリシーが exhaustive から exhaustive2 に変更されました。 ほとんどの場合、この変更によりパフォーマンスが 20% から 40% 向上します。 ただし、left outer join 操作を含むクエリでは、実行プランが最適ではない場合があり、特定のジョブのメモリ使用量が増加します。 この場合、set optimizer_join_order = 'exhaustive'; ステートメントを手動で実行して、オプティマイザポリシーを exhaustive に変更できます。

  • Hologres V2.2 以降では、固定プランを使用するプロセスの Engine Type の値が、スロークエリログで SDK から FixedQE に変更されます。これにより、スロークエリログとメトリックの名前の一貫性が確保されます。

  • Hologres V2.2 以降では、FE ノードへの接続数が 128 から 256 に増加します。接続の総数は 2 倍になります。詳細については、「インスタンス管理」をご参照ください。

  • INSERT OVERWRITEBSI 関数が一般提供されるようになりました。

  • Hologres V2.2 以降、SELECT hg_dump_script() 文は、CALL 構文ではなく WITH 構文でテーブル作成プロパティを返します。この変更により、テーブル作成の利便性と可読性が向上します。詳細については、「テーブルスキーマの表示」をご参照ください。

V2.1 (2024 年 6 月)

Hologres V2.1.27 以降では、VVR 8.0.7 以降を使用する Apache Flink 用 Realtime Compute を使用して Hologres バイナリログを消費する場合、JDBC モードは自動的に jdbc_fixed モードにスペックアップされます。 JDBC モードでのクエリと比較して、jdbc_fixed モードでのクエリは接続を消費せず、クエリのパフォーマンスは walsender の最大数によって制限されません。 jdbc_fixed モードの詳細については、「Hologres コネクタ」をご参照ください。 JDBC モードの詳細については、「JDBC を使用して Hologres バイナリログを消費する」をご参照ください。

V2.1 (2024 年 3 月)

Realtime Compute for Apache Flink を使用して Hologres バイナリログを使用する場合、HoloHub モードはサポートされなくなり、'sdkMode'='holohub' 構成は無効になります。 Java Database Connectivity (JDBC) モードのみがサポートされます。 JDBC モードは HoloHub モードよりも安定しており、より多くのデータ型をサポートしています。 Hologres インスタンスを V2.1 にアップグレードする前に、次のいずれかのソリューションを使用して Realtime Compute for Apache Flink デプロイメントと Hologres インスタンスを確認し、Realtime Compute for Apache Flink デプロイメントが予期どおりに実行できることを確認してください。 詳細については、「JDBC を使用して Hologres バイナリログを使用する」をご参照ください。

  • 解決策 1: 推奨。Realtime Compute for Apache Flink の VVR バージョンを 8.0.7 以降にアップグレードしてから、Hologres インスタンスをアップグレードします。この場合、Realtime Compute for Apache Flink は HoloHub モードを JDBC モードに自動的に変更します。

  • ソリューション 2: Realtime Compute for Apache Flink の VVR バージョンを 6.0.7 から 8.0.5 までのバージョンにアップグレードし、Realtime Compute for Apache Flink のソーステーブルに 'sdkMode'='jdbc' 構成を追加してから、デプロイメントを再起動します。 Hologres インスタンスにログオンするために使用するユーザーアカウントに、次の権限のセットのいずれかを付与します。 デプロイメントが正しく実行されていることを確認したら、Hologres インスタンスをアップグレードします。

    • Hologres インスタンスのスーパーユーザー権限

    • テーブルオーナーの権限、CREATE DATABASE 権限、および Hologres インスタンスのレプリケーション ロールの権限

  • 解決策 3: 推奨されません。Realtime Compute for Apache Flink の VVR バージョンを 8.0.6 にアップグレードしてから、Hologres インスタンスをアップグレードします。この場合、Realtime Compute for Apache Flink は HoloHub モードを JDBC モードに自動的に変更します。VVR 8.0.6 を使用する Realtime Compute for Apache Flink には既知の不具合があります。ディメンションテーブルに過剰な数のフィールドが含まれている場合、タイムアウトが原因で VVR ベースの Realtime Compute for Apache Flink ドラフトをデプロイできません。詳細については、「概要」の「Hologres コネクタ リリースノート」セクションをご参照ください。

  • オプション。多数の VVR ベースの Realtime Compute for Apache Flink デプロイメントがある場合は、Realtime Compute for Apache Flink または Blink を使用して Hologres バイナリログをリアルタイムで使用するの手順に従って、デプロイメントとテーブルに関する情報を取得できます。

V2.1 (2024 年 2 月)

Hologres V2.1.19 では、DECIMAL 型データの乗算および除算が修正されました。V2.1.19 より前のバージョンでは、DECIMAL 型データの基本操作で最大 18 桁の小数点以下がサポートされていました。乗算または除算後の計算結果の小数点以下の桁数が 18 桁を超える場合、計算前にデータが切り捨てられます。その結果、計算結果が無効になります。

たとえば、2 つの 10 進値に対して乗算演算が実行されます。 小数点の前後の桁数の合計 (precision_ans) と、2 つの 10 進値の乗算結果の小数点以下の桁数 (scale_ans) は、次の式を使用して計算されます。

precision_ans = precision_l + precision_r
scale_ans  = scale_l + scale_r

scale_ans の値が 18 より大きい場合、小数点以下 18 桁のみが保持されます。乗算に使用される10進数の値は、次のルールに基づいて指定された小数点以下の桁数に切り捨てられます。

  • scale_l ≤ 9 の場合、関連する 10 進数の値は切り捨てられず、乗算演算における 10 進数の値の小数点以下の桁数は scale_l です。

  • scale_l > 9 の場合、関連する 10 進値は max(9,18-scale_r) によって返される小数点以下の桁数に切り捨てられます。

  • scale_r ≤ 9 の場合、関連する 10 進数の値は切り捨てられず、乗算演算における 10 進数の値の小数点以下の桁数は scale_r です。

  • scale_r > 9 の場合、関連する 10 進値は max(9,18-scale_l) によって返される小数点以下の桁数に切り捨てられます。

次のサンプルコードは例を示しています。

CREATE TABLE t (a DECIMAL(30,10), b DECIMAL(30,10));
INSERT INTO t VALUES (1.1111111111, 1.0000000000),(1.1111111112, 1.0000000000);
SELECT a, b , a*b FROM t;
  • V2.1.19 より前のバージョンでは、乗数の有効な小数点以下の桁数が 9 を超える場合、乗数は指定された小数点以下の桁数に切り捨てられ、精度に悪影響を及ぼします。その結果、計算結果が無効になります。

    -- Hologres での計算結果が無効です。
    1.1111111111, 1.0000000000,1.111111111000000000
    1.1111111112, 1.0000000000,1.111111111000000000
    
    -- PostgreSQL での計算結果が有効です。
    1.1111111111, 1.0000000000,1.111111111100000000
    1.1111111112, 1.0000000000,1.111111111200000000
  • Hologres V2.1.19 以降では、この問題は修正されています。乗算操作は元の 10 進値に対して実行され、乗算結果は指定された小数点以下の桁数に切り捨てられます。これにより、結果の高精度が保証されます。

    -- 計算結果が有効です。
    1.1111111111, 1.0000000000,1.111111111100000000
    1.1111111112, 1.0000000000,1.111111111200000000

V2.1 (2023 年 10 月)

特定の機能が最適化されています。

  • Hologres V2.1.12 以降では、固定プラン機能を使用して DECIMAL 型の列にデータを書き込む場合、精度が指定されておらず、ソースデータの精度が宛先列の精度よりも高い場合、Hologres は宛先列の精度に基づいてソースデータを四捨五入します。 Hologres V2.1.11 以前では、Hologres は宛先列の精度に基づいてソースデータを切り捨てます。 次の文は例を示しています。

    説明

    Hologres V2.1.12 以降では、固定プラン機能を使用するかどうかに関係なく、プロセスは同じです。

    CREATE TABLE fixed_plan_decimal (col DECIMAL(3,2));
    
    -- Hologres V2.1.12 以降では、データ 2.56 が書き込まれます。V2.1.12 より前のバージョンでは、データ 2.55 が書き込まれます。
    INSERT INTO fixed_plan_decimal VALUES (2.555);
    
    -- すべての Hologres バージョンで、データ 2.55 が書き込まれます。
    INSERT INTO fixed_plan_decimal VALUES (2.554);
  • データマップデータリネージ、および 伝送暗号化はベータ段階を完了し、現在一般提供されています。

  • Hologres Binlog を消費するための権限要件が更新され、ターゲットテーブルに対する読み取り権限のみが必要になりました。詳細については、「JDBC を使用して Hologres バイナリログを消費する」をご参照ください。

  • Bulkload を使用して分散キーのない Hologres 内部テーブルにデータをインポートすると、インポートパフォーマンスが低下する可能性があります。

  • Hologres V2.1 以降では、CREATE TABLE WITH PROPERTY 構文がサポートされ、テーブルプロパティの構成が簡素化されます。詳細については、「CREATE TABLE」をご参照ください。

  • Hologres V2.1 以降では、DELETE 操作と UPDATE 操作のコンパクションポリシーが変更されています。 変更後、DELETE 操作が実行されたタグ付きファイルはタイムリーに再利用されます。 列指向テーブルで DELETE 操作と UPDATE 操作が頻繁に実行されるシナリオでは、ストレージ容量が削減され、クエリパフォーマンスが向上する可能性があります。 Hologres インスタンスを V2.1 以降にスペックアップした後、履歴の小さなファイルはバックグラウンドで圧縮され、大量の CPU リソースが消費されます。 圧縮には、小さなファイルのサイズに応じて、10 分以上、場合によっては数時間かかることがあります。

  • Hologres V2.1 以降、CONFLICT で指定されたすべての列が INSERT INTO <table_name> ON CONFLICT(<col_name>,...) DO 構文のプライマリキー列であるかどうかを確認するメカニズムが追加されました。 いずれかの列がプライマリキー列でない場合、SQL ステートメントの実行は失敗します。 詳細については、「INSERT ON CONFLICT(UPSERT)」をご参照ください。

  • Hologres V2.1 以降、外部テーブルを使用してデータレイクにアクセスするために、デフォルトで dlf_fdw 拡張機能が作成されます。 dlf_fdw 拡張機能を手動で作成する必要はありません。 外部サーバーを作成するときに dlf_region パラメータを指定する必要はありません。 dlf_endpointoss_endpointdlf_catalog パラメータのみを指定する必要があります。 エラーを防ぐために、dlf_endpoint および oss_endpoint パラメータの形式検証が追加されています。 形式の要件:

    • dlf_endpoint: dlf-share.<nation>-<region>.aliyuncs.com

    • oss_endpoint:

      • OSS バケット: oss-<nation>-<region>-internal.aliyuncs.com

      • OSS-HDFS バケット: oss-<nation>-<region>.oss-dls.aliyuncs.com

  • 次のキーワードは、非予約キーワードとして使用されます: system_timeproctimedynamic。 非予約キーワードを SQL ステートメントの列名として使用することはできず、エイリアスとしてのみ使用できます。 非予約キーワードは AS の後に使用する必要があります。 ステートメントの例:

    -- Hologres V2.0 以前では、3 つのキーワードを SQL 文の列名またはエイリアスとして使用できます。
    SELECT xxxx SYSTEM_TIME FROM t;
    
    SELECT xxxx AS SYSTEM_TIME FROM t;
    
    -- Hologres V2.1 以降では、3 つのキーワードは SQL 文のエイリアスとしてのみ使用できます。
    SELECT xxxx AS SYSTEM_TIME FROM t;

V2.0 (2023 年 6 月)

特定の機能が最適化されました。

  • Realtime Compute for Apache Flink を使用して Hologres バイナリログを消費する場合、JDBC モードがサポートされています。 `sdkMode`=`holohub` 構成で指定された HoloHub モードは段階的に廃止されます。 JDBC モードは HoloHub モードよりも安定しており、より多くのデータ型をサポートしています。 Hologres インスタンスを V2.0 にアップグレードする前に、次のいずれかのソリューションを使用して、Realtime Compute for Apache Flink デプロイメントと Hologres インスタンスを確認し、Realtime Compute for Apache Flink デプロイメントが想定どおりに実行できることを確認してください。 詳細については、「JDBC を使用して Hologres バイナリログを消費する」をご参照ください。

    • ソリューション 1: 推奨。 Realtime Compute for Apache Flink の VVR バージョンを 8.0.6 以降にアップグレードしてから、Hologres インスタンスをアップグレードします。 この場合、Realtime Compute for Apache Flink は HoloHub モードを JDBC モードに自動的に変更します。 VVR 8.0.6 を使用する Realtime Compute for Apache Flink には既知の不具合があります。 ディメンションテーブルに過剰な数のフィールドが含まれている場合、タイムアウトが原因で VVR ベースの Realtime Compute for Apache Flink ドラフトをデプロイできません。 詳細については、「概要」の「Hologres コネクタ リリースノート」セクションをご参照ください。 Realtime Compute for Apache Flink の VVR バージョンを 8.0.7 にアップグレードすることをお勧めします。

    • ソリューション 2: Realtime Compute for Apache Flink の VVR バージョンを 8.0.4 または 8.0.5 にアップグレードし、デプロイを再起動します。 Hologres インスタンスにログインするために使用されるユーザーアカウントに、次の権限のセットを 1 つ付与します。 デプロイが正しく実行されていることを確認したら、Hologres インスタンスをアップグレードします。

      • Hologres インスタンスのスーパーユーザー権限

      • テーブルオーナーの権限、CREATE DATABASE 権限、および Hologres インスタンスのレプリケーション ロールの権限

    • ソリューション 3: Realtime Compute for Apache Flink の VVR バージョンを 6.0.7 から 8.0.3 までのバージョンにアップグレードしてから、Hologres インスタンスをアップグレードします。 この場合、Realtime Compute for Apache Flink は引き続き HoloHub モードを使用して Hologres バイナリログを消費します。

  • 'sdkMode'='rpc' または 'rpcMode'='true' 構成で指定されたリモートプロシージャコール (RPC) モードは、Realtime Compute for Apache Flink のディメンションテーブルと結果テーブルではサポートされなくなりました。 代わりに JDBC モードが使用されます。 Hologres インスタンスを V2.0 にアップグレードする前に、次の操作を実行して Realtime Compute for Apache Flink デプロイメントと Hologres インスタンスを確認し、Realtime Compute for Apache Flink デプロイメントが予期どおりに実行できることを確認してください。 詳細については、「Hologres コネクタ」をご参照ください。

    • Realtime Compute for Apache Flink の VVR バージョンが 6.0.7 以降の場合、システムは RPC モードを JDBC モードに自動的に変更します。 操作は必要ありません。

    • Realtime Compute for Apache Flink の VVR バージョンが 6.0.3 から 6.0.6 の場合、Realtime Compute for Apache Flink デプロイメントの 'sdkMode'='rpc' 構成を 'sdkMode'='jdbc' に変更するか、'rpcMode'='true' 構成を 'rpcMode'='false' に変更します。

    • Realtime Compute for Apache Flink の VVR バージョンが 6.0.2 以前の場合、Realtime Compute for Apache Flink デプロイメントの 'rpcMode'='true' 構成を 'rpcMode'='false' に変更します。

    • Hologres インスタンスへの接続が不十分な場合は、connectionPoolName パラメータを構成して、接続プール内の接続を共有することをお勧めします。 また、Realtime Compute for Apache Flink の VVR バージョンを 6.0.7 以降にアップグレードし、'sdkMode'='jdbc_fixed' 構成を使用することもできます。 この場合、接続は占有されません。

    • RPC モードでは、同じバッチ内の同じプライマリキーを持つデータの重複は排除されません。 JDBC モードでは、データの重複が自動的に排除されます。 ビジネスシナリオで完全なデータを保持する必要がある場合は、'jdbcWriteBatchSize'='1' 構成を使用して重複排除を防ぎます。

  • Hologres V2.0 以降では、Blink を使用して Hologres 内のデータに対してリアルタイムのポイントクエリを実行したり、Hologres にデータを書き込んだりすることはできません。 Hologres インスタンスをアップグレードする前に、Blink デプロイメントを Realtime Compute for Apache Flink に移行することをお勧めします。

V2.0 (2023 年 4 月)

特定の機能が最適化されました。

  • Hologres V2.0 以降では、セグメント形式のデータは列指向ストレージモードに格納できません。セグメント形式のデータを含む Hologres インスタンスは、V2.0 以降にアップグレードできません。 hg_convert_segment_orc 関数を使用すると、セグメント形式の複数のテーブルを Optimized Row Columnar (ORC) 形式のテーブルに同時に変換できます。詳細については、「既存の列指向テーブルのデータ ストレージ形式を更新する」をご参照ください。

  • テーブルグループまたはインスタンスのシャード数に上限が設けられました。これは、テーブルグループの誤用によるリソースの浪費を防ぐのに役立ちます。詳細については、「テーブルグループと Shard Count のユーザーガイド」をご参照ください。

  • データは、SDK モードではなく JDBC モードで DataHub に書き込まれます。 JDBC モードは SDK モードよりも安定しており、より多くのデータ型をサポートしています。

  • デフォルトでは、バイナリログ拡張機能が構成されています。 JDBC モードでバイナリログデータを使用する場合、バイナリログ拡張機能を作成する必要はありません。 JDBC モードでバイナリログデータを使用する場合、使用できる walsender の最大数は 10 倍に増加します。 32 個の CPU コアで構成されたインスタンスの場合、walsender の最大数は 200 から 2,000 に増加します。 Walsender はスロットとしてカウントされます。詳細については、「JDBC を使用して Hologres バイナリログを使用する」をご参照ください。

  • Hologres インスタンスをアップグレードした後、統計情報が収集されていないテーブルに対して自動分析機能が実行されます。このプロセスは CPU リソースを消費し、統計情報が収集されていないテーブルの数によっては、数分から数時間かかる場合があります。

  • バックアップおよびリストア機能と階層型ストレージ機能のパブリックプレビューが完了し、本番環境で使用できるようになりました。

  • 共有レベルのレプリケーション機能のパブリックプレビューが完了し、本番環境で使用できるようになりました。詳細については、「高スループットのためのシャードレベルレプリケーション」をご参照ください。

  • テーブルのプロパティを指定するパラメーターが標準化されました。列名に大文字が含まれている場合にテーブルプロパティを構成するために使用される構文が変更されます。詳細については、「CREATE TABLE」をご参照ください。 bitmap_columns プロパティでは、値 auto はサポートされていません。この変更は、既存のテーブルの使用には影響しません。

  • HG_CREATE_TABLE_LIKE 関数は、作成されたインデックス、SERIAL データ型の列、および proxima ベクターインデックスが作成された列を継承できます。

V1.3 (2023 年 6 月)

  • Hologres V1.3.53 以降では、レプリカ数はワーカー数以下である必要があります。詳細については、「高スループットを実現するためのシャードレベルのレプリケーション (ベータ版)」をご参照ください。

  • Avg 関数の計算結果が最適化されました。V1.3 より前のバージョンの Hologres では、Avg 関数は最大 6 桁の小数点以下の計算結果を返します。計算結果に 6 桁を超える小数点以下の桁数が含まれている場合、計算結果は切り捨てられます。Hologres V1.3 以降では、Avg 関数は完全な小数点以下の計算結果を返します。

  • DECIMAL 型の値から変換された TEXT 型の値が最適化されました。Hologres V1.3.46 より前のバージョンでは、DECIMAL 型の値から変換された TEXT 型の値は科学表記法で表示されます。Hologres V1.3.46 以降では、DECIMAL 型の値から変換された TEXT 型の値は直接表示されます。SQL ステートメントの例:

    CREATE TABLE t (a INT, b DECIMAL(38,10));
    INSERT INTO t VALUES (1,1);
    INSERT INTO t VALUES (1,0);
    SELECT a,b,b::text FROM t;
    -- Hologres V1.3.46 以降では、次の結果が返されます。
    a	|  b	        |b
    --+-------------+------
    1 |0.0000000000	|0.0000000000
    1 |1.0000000000	|1.0000000000
    
    -- Hologres V1.3.46 より前のバージョンでは、次の結果が返されます。
    a	|  b	        |b
    --+-------------+------
    1 |0.0000000000	|0.E-10
    1 |1.0000000000	|1.0000000000

2023 年 2 月にリリースされた Hologres V1.3 におけるデフォルトの動作の変更

特定の機能が最適化されました。

Hologres V1.3.36 以降では、スキーマレベルの権限モデル (SLPM) を使用して、スキーマを跨ぐビューを作成できます。詳細については、「SLPM を使用する」をご参照ください。

V1.3 (2023 年 1 月)

特定の機能が最適化されました。

  • Hologres V2.0 以降では、セグメントフォーマットのテーブルはサポートされなくなりました。Hologres V1.3.35 以降では、セグメントフォーマットの複数のテーブルを ORC フォーマットのテーブルに同時に変換するための文が提供されています。この変換により、既存のテーブルのデータの移行が容易になります。詳細については、「既存の列指向テーブルのデータ ストレージ フォーマットを更新する」をご参照ください。セグメントフォーマットのデータを含む Hologres インスタンスは、新しいバージョンにアップグレードできません。

  • Hologres V1.3.35 以降、固定プラン機能の Grand Unified Configuration (GUC) パラメータの多くがデフォルトで on に設定されています。 これにより、システムの使いやすさとパフォーマンスが向上します。 詳細については、「固定プランを使用して SQL ステートメントの実行を高速化する」をご参照ください。

V1.3 (2022 年 12 月)

特定の機能が最適化されました。

  • [2022 年 12 月 26 日] 以降、Alibaba Cloud は、バックアップまたは復元機能を使用して作成されたインスタンスを含む、新しいインスタンスに VPC(仮想プライベートクラウド) エンドポイントを提供しなくなりました。より安全な VPC エンドポイントを指定できます。指定する VPC エンドポイントは、Hologres インスタンスの購入時に選択した VPC にのみ接続されます。これにより、セキュリティと隔離が向上します。既存のインスタンスは影響を受けません。元の VPC エンドポイントを無効にし、代わりに VPC エンドポイントを指定することをお勧めします。

  • Hologres V1.3.31 以降では、デフォルトで Hologres のデータを暗号化し、MaxCompute から暗号化されたデータをクエリできます。追加の設定を行ったり、チケットを送信したりする必要はありません。詳細については、「Hologres でデータを暗号化する」および「BYOK に基づいて暗号化された MaxCompute データをクエリする」をご参照ください。

V1.3 (2022 年 11 月)

特定の機能が最適化されました。

  • Hologres V1.3.28 以降では、クラスタリングキーまたはセグメントキーとして構成されている列のデータに null 値 を含めることはできません。詳細については、「クラスタリングキー」および「イベント時間列(セグメントキー)」をご参照ください。

  • Hologres V1.3.28 以降では、hg_experimental_load_all_foreign_table_interval_time パラメータのデフォルト値が 5min から 30min に変更されました。このパラメータは、すべての MaxCompute テーブルの外部テーブルを自動的に作成するために検査が定期的に実行される間隔を指定します。詳細については、「MaxCompute テーブルの外部テーブルを自動的に作成する」をご参照ください。

  • Hologres V1.3.28 以降では、分散キーとして構成されている列に空の文字列を含めることはできません。詳細については、「分散キー」をご参照ください。

  • Hologres V1.3.27 以降では、プライマリインスタンスからセカンダリインスタンスへのデータ同期の遅延のしきい値が 20 分から 60 分に変更されました。同期遅延が 60 分を超えると、セカンダリインスタンスは自動的に再起動されます。詳細については、「マルチインスタンス高可用性デプロイメントを構成する」をご参照ください。

V1.3 (2022 年 10 月)

特定の機能が最適化されました。

  • Hologres V1.3.24 以降では、hg_worker_info システムビューを使用して、シャードとワーカーノード間の割り当て関係をクエリできます。 これにより、計算リソースの割り当てが不均一になる問題を解決できます。 詳細については、「ワーカー間のシャード割り当てをクエリする」をご参照ください。

  • Hologres V1.3.24 以降では、テーブルデータの最小生存時間(TTL)は 1 日(86,400 秒)です。 詳細については、「その他の PostgreSQL 文」をご参照ください。

  • Hologres V1.3.24 以後では、Hologres のバイナリロギングを有効にすると、pg_relation_size 関数はバイナリログのサイズを返します。 詳細については、「テーブルとデータベースのストレージサイズをクエリする」をご参照ください。

  • Hologres V1.3.24 以降では、ビジネス要件に基づいて子テーブルのバイナリログの TTL を構成できます。 詳細については、「Hologres バイナリログをサブスクライブする」をご参照ください。

V1.3 (2022 年 9 月)

特定の機能が最適化されました。

  • TTL の有効期限が切れ、同じプライマリキーが共有されている場合、データの書き込みに失敗します。 Hologres V1.3.23 以降では、SQL 文を使用してこの問題を修正できます。 詳細については、「INSERT ON CONFLICT(UPSERT)」をご参照ください。

  • Hologres V1.3.22 以降では、PostgreSQL システムテーブルと、作成した Hologres 内部テーブルを結合できます。 また、PostgreSQL システムテーブルから Hologres 内部テーブルにデータをエクスポートすることもできます。 詳細については、「システムテーブル」をご参照ください。

  • Hologres V1.3.22 以降では、DATE 型の列をプライマリキー列またはパーティションキー列として構成できます。 詳細については、「CREATE TABLE」をご参照ください。

  • Hologres V1.3.21 以降では、Create Table As 文を使用して、既存のテーブルと同じテーブル構造とデータを持つテーブルを作成できます。 詳細については、「CREATE TABLE AS」をご参照ください。

V1.3 (2022 年 7 月)

特定の機能が最適化されました。

  • JSON 関連機能のパブリックプレビューが完了しました。この機能は正式にリリースされました。

  • PostGIS 関連機能のパブリックプレビューが完了しました。この機能は正式にリリースされました。

  • Data Integration や Realtime Compute for Apache Flink などのメソッドを使用してデータを挿入する場合、SDK ではなく SQL 文を使用してデータを書き込むことをお勧めします。SQL 文は INSERT 文です。

V1.1 (2022 年 7 月)

Hologres の自己診断機能と自己運用機能を向上させるために、多数のメトリックが Hologres に追加されました。これらのメトリックは、問題の特定とリソース使用状況の詳細のより正確なクエリに役立ちます。これにより、Hologres の全体的な可用性が向上します。メトリックを使用する場合は、次の点に注意してください。

  • 2022 年 7 月に追加されたメトリックは、Hologres V1.1 以降にのみ適用されます。Hologres インスタンスのバージョンが V1.1 より前の場合は、Hologres コンソールで Hologres インスタンスを手動でアップグレードするか、テクニカルサポートの DingTalk グループに参加してください。Hologres コンソールで Hologres インスタンスを手動でアップグレードする方法の詳細については、「手動アップグレード (ベータ)」をご参照ください。テクニカルサポートを受ける方法の詳細については、「Hologres のオンラインサポートを受ける」をご参照ください。

  • CPU とメモリのメトリックは、リソース使用量をより正確に判断できるように、より正確な方法で計算されます。2022 年 7 月に新しいメトリックがリリースされた後、V1.1 の Hologres インスタンスの CPU 使用率とメモリ使用量は 5% から 10% の間で変動する可能性があります。Hologres インスタンスの CPU 使用率とメモリ使用量は、CloudMonitor でも変動します。CloudMonitor のアラート情報に注意し、適切な監視しきい値を再構成してください。

メトリックの詳細については、「Hologres メトリック」をご参照ください。

V1.1 (2022 年 4 月)

メモリ使用量が最適化されました。

Hologres V1.1.53 以降では、メモリ使用量が最適化されています。また、運用と保守のメトリックもバックエンドで最適化された方法で報告されます。これにより、消費されるメモリ リソースが少なくなり、計算により多くのメモリ リソースを使用できるようになります。ビジネス要件に基づいて、Hologres インスタンスのバージョンを V1.1.53 に更新できます。

V1.1 (2022 年 3 月)

固定プランを使用して開始されるポイントクエリの性能が最適化されました。

Hologres V1.1.49 以降では、固定プランを使用して開始されるポイントクエリの性能が最適化されています。大量のデータを含むポイントクエリでは、スループットが 30% 以上向上します。ビジネス要件に基づいて、Hologres インスタンスのバージョンを V1.1.49 以降に更新できます。固定プランの詳細については、「固定プランを使用して SQL 文の実行を高速化する」をご参照ください。

V1.1 (2022 年 3 月)

子テーブルが親テーブルにアタッチされるときに、プロパティが検証されます。

Hologres V1.1.42 以降では、子テーブルを親テーブルにアタッチするリクエストを開始した後、子テーブルと親テーブルのプロパティが厳密に検証されます。子テーブルのプロパティが親テーブルのプロパティと一致しない場合、エラーが報告され、アタッチ操作は失敗します。システムが検証するプロパティには、プライマリキー、インデックス、および非 NULL 制約が含まれます。子テーブルを作成する前に、子テーブルのプロパティが親テーブルのプロパティと一致していることを確認してください。詳細については、「CREATE PARTITION TABLE」をご参照ください。

次のサンプルコードは、子テーブルのクラスタリングキーが親テーブルのクラスタリングキーと一致しないサンプルシナリオを示しています。この場合、子テーブルは親テーブルにアタッチできません。

-- この例では、次のデータ定義言語(DDL)文を実行して、親テーブルと子テーブルを作成します。
BEGIN;
CREATE TABLE public.hologres_parent(
  a INT,
  b text NOT NULL,
  c timestamptz NOT NULL,
  ds text,
  PRIMARY KEY(a,ds)
)
 PARTITION BY LIST(ds);
CALL set_table_property('public.hologres_parent', 'orientation', 'column');
CALL set_table_property('public.hologres_parent', 'distribution_key', 'a');
CALL set_table_property('public.hologres_parent', 'clustering_key', 'b');
CALL set_table_property('public.hologres_parent', 'event_time_column', 'c');

CREATE TABLE public.hologres_child PARTITION OF public.hologres_parent 
FOR VALUES IN('20201103');

COMMIT;

-- 一時的な子パーティションテーブルを作成します。
BEGIN;
CREATE TABLE IF NOT EXISTS public.tmp_hologres_child(
  a INT,
  b text NOT NULL,
  c timestamptz NOT NULL,
  ds text,
  PRIMARY KEY (a,ds)
);
CALL set_table_property('public.tmp_hologres_child', 'orientation', 'column');
CALL set_table_property('public.tmp_hologres_child', 'distribution_key', 'a');
CALL set_table_property('public.tmp_hologres_child', 'clustering_key', 'a,b');
CALL set_table_property('public.tmp_hologres_child', 'event_time_column', 'c');
COMMIT;

-- 外部テーブルから一時的な子パーティションテーブルにデータをインポートします。
INSERT INTO public.tmp_hologres_child SELECT * FROM foreign_table WHERE ds='20201103';

-- 元の子パーティションテーブルを削除し、一時的な子パーティションテーブルを親テーブルに関連付けます。
BEGIN;
DROP TABLE IF EXISTS  public.hologres_child;
ALTER TABLE public.tmp_hologres_child RENAME TO hologres_child;
ALTER TABLE public.hologres_parent ATTACH PARTITION public.hologres_child
FOR VALUES IN ('20201103');
COMMIT ;

-- エラー原因。
ERROR: 
partition index hologres_child's immutable properties(e.g. clustering_key, event_time_column) is consistent with parent.  
Hint: create partition with [create table ... partition of ...] to be consistent with parent.                

V1.1 (2021 年 12 月)

デフォルトでは、新しい Hologres インスタンスのパブリックエンドポイントは無効になっています。

データアクセスの制御に関するセキュリティ要件を満たすため、2021 年 12 月 7 日 00:00:00 から、新しい Hologres インスタンスのパブリックエンドポイントは自動的に無効になり、デフォルトではインターネットアクセス機能は提供されません。パブリックエンドポイントを使用して Hologres インスタンスに接続する場合は、Hologres コンソール でパブリックエンドポイントを有効にできます。

V1.1 (2021 年 11 月)

計算に使用される最大メモリがノードあたり 20 GB に制限されなくなりました。

Hologres V1.1.24 以降では、ワーカーノードに対してノードあたり 20 GB の制限が削除され、計算に使用されるメモリは各ノードに動的に割り当てられます。 ワーカーノードのメモリ使用量は、Hologres バックエンドで継続的に監視されます。 これにより、計算に使用されるメモリは、ノードのメモリ使用量に基づいてノードに動的に割り当てることができ、クエリの成功を保証します。 Hologres V1.1.24 以降でクエリを実行したときに、実行計画は有効であるが、メモリ使用量が上限を超えていることを示すエラーメッセージが返された場合は、SQL 文を最適化するか、Hologres インスタンスをスケールアップする必要があります。

説明

Hologres インスタンスのバックエンドは複数のノードで構成されています。 Hologres インスタンスに含まれるノードの数は、インスタンスの仕様によって異なります。 シングルノードの最大メモリは 64 GB です。 ノードのメモリは、計算、キャッシュ、メタデータ、および常駐プロセスに均等に割り当てられます。

V1.1 (2021 年 10 月)

  • デフォルトで、自動分析機能が有効になります。

    自動分析機能は Hologres V0.10 で導入されました。この機能はオンラインのユーザーによって検証され、本番環境で安定していることが証明されています。デフォルトでは、Hologres V1.1 で自動分析機能が有効になっています。 V1.1 に更新された Hologres インスタンスでは、自動分析機能の状態は変更されません。デフォルトでは、Hologres V1.1 で作成された新しいインスタンスに対して自動分析機能が有効になっています。関連するパラメーター名も Hologres V1.1 で変更されています。次の表に、変更点を示します。

    元のパラメーター名

    新しいパラメーター名

    デフォルト値

    hg_experimental_enable_start_auto_analyze_worker

    hg_enable_start_auto_analyze_worker

    on

    自動分析機能の使用方法の詳細については、「ANALYZE と自動分析」をご参照ください。

  • テーブルグループに関連する関数の名前が変更されました。

    再シャーディング機能は Hologres V0.10 で導入されました。この機能はオンラインのユーザーによって検証され、本番環境で安定していることが証明されています。 Hologres V1.1 では、テーブルグループに関連する関数の名前が変更されました。次の表に、変更点を示します。

    元の関数名

    新しい関数名

    hg_update_table_shard_count('table_name','table_group_name')

    hg_move_table_to_table_group('table_name','table_group_name')

  • Hologres での MaxCompute 外部テーブルへの高速アクセスのためのエンジンが変更されました。

    MaxCompute 外部テーブルへの高速アクセスのための新しいエンジンが Hologres V0.10 で導入されました。このエンジンは、パフォーマンスを 30% 以上向上させます。このエンジンはオンラインのユーザーによって検証され、本番環境で安定していることが証明されています。 Hologres V1.1 では、新しいエンジンが MaxCompute 外部テーブルへの高速アクセスのデフォルトエンジンとして使用されます。 V1.1 に更新された Hologres インスタンスでは、MaxCompute 外部テーブルへの高速アクセスのためのエンジンは変更されません。 Hologres V1.1 で作成された新しいインスタンスでは、新しいエンジンがデフォルトエンジンとして使用されます。関連するパラメーター名も Hologres V1.1 で変更されています。次の表に、変更点を示します。

    元のパラメーター名

    新しいパラメーター名

    備考

    hg_experimental_enable_access_odps_orc_via_holo

    hg_enable_access_odps_orc_via_holo

    デフォルト値: on。

    hg_experimental_foreign_table_executor_max_dop

    hg_foreign_table_executor_max_dop

    デフォルト値がインスタンスの CPU コア数に変更されました。最大値は 128 です。

    なし

    hg_foreign_table_executor_dml_max_dop

    このパラメーターは Hologres V1.1 で追加されました。デフォルト値は 32 です。このパラメーターは、外部テーブルに関連する DML 文に適用されます。

    hg_experimental_foreign_table_split_size

    hg_foreign_table_split_size

    デフォルト値: 64。単位: MB。

    hg_experimental_foreign_table_max_partition_limit

    hg_foreign_table_max_partition_limit

    デフォルト値は 512 です。この値は、クエリで最大 512 個のパーティションをスキャンできることを示します。

    hg_experimental_enable_write_maxcompute

    なし

    Hologres V1.1 では、デフォルト値は on です。値 on は、データを MaxCompute に書き戻すことができることを示します。詳細については、「MaxCompute にデータをエクスポートする」をご参照ください。

    パラメーターの詳細については、「Hologres での MaxCompute テーブルのクエリのパフォーマンスを最適化する」をご参照ください。

  • pg_stat_activity テーブルは、すべてのフロントエンドノードのアクティブな接続のステータスを記録します。

    Hologres V1.1 より前のバージョンでは、pg_stat_activity テーブルは単一の FE ノードのアクティブな接続のステータスのみを記録していました。これにより、アクティブなクエリの確認と処理が不便になります。 Hologres V1.1 では、pg_stat_activity テーブルはすべての FE ノードのアクティブな接続のステータスを記録します。 pg_stat_activity テーブルを使用してアクティブなクエリを管理する方法の詳細については、「クエリを管理する」をご参照ください。

  • 接続管理メカニズムが調整されました。

    Hologres V1.1 以降では、接続はスーパーユーザー用に予約されています。さらに、HoloWeb 接続プールのロジックが最適化されました。これにより、スーパーユーザーは HoloWeb を使用して Hologres インスタンスに接続し、接続数がインスタンスタイプでサポートされる最大接続数を超えた場合に接続を管理または解放できます。詳細については、「接続を管理する」をご参照ください。

  • idle_in_transaction_session_timeout パラメーターのデフォルト値が変更されました。

    idle_in_transaction_session_timeout パラメーターは、トランザクションがアイドル状態になってからのタイムアウト期間を指定します。このパラメーターを設定しない場合、タイムアウトしたトランザクションはデフォルトではロールバックされません。その結果、クエリ中にデッドロックが発生する可能性があります。 Hologres V1.1 では、idle_in_transaction_session_timeout パラメーターはデフォルトで 10 分に設定されています。詳細については、「クエリの管理」をご参照ください。