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

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

最終更新日:Sep 03, 2026

インスタンスをアップグレードする前に、各 Hologres バージョンでのデフォルトの動作変更を確認してください。

説明

パラメーター名の変更は下位互換性があります。元の名前も引き続き機能しますが、新しい名前の使用を推奨します。

V4.2

2026 年 8 月

単一の MaxCompute 外部テーブルから読み取られるファイル数の新しい制限

変更点:Hologres V4.2.14 以降、新しい GUC パラメーター hg_experimental_maxcompute_sdk_split_total_file_count_limit が追加され、デフォルト値は 100,000 です。単一の MaxCompute 外部テーブルが 1 つのクエリ内でこの制限を超えるファイルを読み取ると、クエリはエラーで失敗します。この変更以前は、このパラメーターは存在せず、単一テーブルから読み取られるファイル数に制限はありませんでした。

影響:MaxCompute 外部テーブルをクエリするワークロード、特に多数の小さいファイルを含むテーブルに影響します。制限を超えたクエリはブロックされ、過剰なメモリ使用による OOM のトリガーや、インスタンス上の他のワークロードへの影響を防ぎます。

推奨事項:まず MaxCompute 側で小さいファイルをマージして、各クエリが読み取るファイル数を減らしてください。小さいファイルのマージが当面不可能な場合は、インスタンスの残りのリソースを評価した上で hg_experimental_maxcompute_sdk_split_total_file_count_limit を増やすことができます。値を大きくすると、インスタンスのメモリのウォーターマークが上昇します。実際のワークロードに基づいて控えめに設定し、調整後はメモリ使用量を継続的にモニタリングしてください。

2026 年 6 月

Hologres V4.2.3 以降、データ転送のセキュリティを強化するため、OSS および DLF カタログベースのレイクハウスソリューションにアクセスするためのデフォルトのネットワークプロトコルが HTTP から HTTPS に変更されました。

Hologres V4.2 以降、以下のデフォルトの動作が変更されました。

  • テーブル統計の row_count フィールドのロジック変更

    変更点:Hologres は統計 v2 を使用して row_count を計算するようになりました。新しい方法は DML カウンターではなくファイルメタデータに基づいており、TTL の有効期限が切れたり、テーブルが頻繁に更新されたりする場合でも、より安定したカウントを提供します。削除マークが付いている行や、すでに有効期限が切れているがまだ物理的に削除されていない行も含まれるため、カウントがわずかに増加する可能性があります。この偏差はコンパクションによって抑制されます。

  • 共通テーブルパスを介した MaxCompute からの直接読み取りで自動分割がデフォルトで有効化

    変更点:共通テーブルパスに対して自動分割がデフォルトで有効になりました。以前はデフォルトで無効でした。この動作は GUC パラメーター hg_experimental_enable_maxcompute_sdk_auto_split_size によって制御されます。

    影響:共通テーブルパスを介して MaxCompute にアクセスするすべてのクエリに影響します。

    必要なアクション:ほとんどの場合、アクションは不要です。問題が発生した場合は、GUC パラメーターでこの機能を無効にしてください。

    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = off;
  • ゴミ箱の操作で実行中のクエリがキャンセルされるように

    変更点:ゴミ箱内のオブジェクトを削除すると、そのオブジェクトに対して実行中の DML および DQL 操作がキャンセルされるようになりました。Hologres V4.2 より前のバージョンではキャンセルされませんでした。これにより、ゴミ箱の削除によって SE スキーマバージョンがブロックされるのを防ぎます。

    影響:テーブルをゴミ箱にドロップすると、そのテーブルへの書き込みまたは読み取りを行っているクエリはキャンセルされ、失敗します。

    検出方法:SQL ワークロードを再生し、テーブルがドロップされた後にそのテーブルからの読み取りまたは書き込みに依存しているかどうかを確認します。

    必要なアクション:

    1. アプリケーションコードを確認し、テーブルをドロップした後もクエリや書き込みを続けるロジックがないか調べます。

    2. キャンセルされたクエリに対するエラーハンドリングを追加します。

    3. テーブルをドロップする前に、アクティブなクエリがそのテーブルにアクセスしていないことを確認します。

  • システムテーブルの権限変更

    変更点:スーパーユーザーは pg_catalog スキーマ配下のどのテーブルに対しても DML 権限を持たなくなりました。

    影響:pg_catalog テーブルに対して DML ステートメントを実行するスクリプトやツールは失敗します。

    検出方法:回帰テストを実行して、pg_catalog テーブルを対象とする INSERT、UPDATE、または DELETE ステートメントを見つけます。

    必要なアクション:pg_catalog テーブルに対するすべての DML 操作を代替の実装に置き換えます。

  • 最小 TTL 制約の動作変更

    変更点:新しい GUC パラメーター hg_time_to_live_in_days_min_value が time_to_live_in_seconds の最小値を制御します。デフォルト値は 36,500 日です。

    影響:テーブルを作成する際、その TTL は 36,500 日 (100 年) 未満に設定できません。

  • 数値関数の精度推論の変更

    変更点:PQE の数値関数が精度推論をサポートするようになりました。以前は、結果は小数点以下 10 桁に切り捨てられていました。現在は、結果は推論された精度まで計算され、残りの桁は切り捨てられずに四捨五入されます。

  • Fast Rows がデフォルトで有効になり、外部テーブルのパーティション数が調整される

    変更点:統計情報がない外部テーブル (以前のバージョンではプランで rows=1000 と推定) に対するクエリについて、Hologres はデフォルトでクエリ実行前に Fast Rows 取得ステップを追加します。

    影響:統計情報のない MaxCompute 外部テーブル、および API を通じて統計情報を公開する Paimon テーブルに対するクエリと書き込みに影響します。

    検出方法:アップグレード準備中に、総クエリ持続時間が悪化することが観測される場合があります。スロークエリ履歴で、プランが rows=1000 と推定している外部テーブルを確認してください。

  • フルテキスト検索のデフォルトトークナイザーの変更

    変更点:フルテキストインデックスを作成する際、デフォルトのトークナイザーが jieba から ik に変更され、パフォーマンスと再現率の両方が向上しました。

    新しいインデックスの場合、デフォルトのインデックストークナイザー (analyzer_params) は ik_max_word モードの ik で、デフォルトの検索トークナイザー (search_analyzer_params) は ik_smart モードの ik です。

  • 同じ位置にあるトークンに対するフレーズクエリのマッチングの変更

    変更点:トークナイザーが同じ位置で複数のトークンを出力する場合、フレーズクエリはそれらのトークンを AND ロジックではなく OR ロジックで処理するようになりました。候補トークンのいずれか 1 つが一致すると、その位置は一致と見なされます。例えば、jieba(mode=search) は「实验室」(実験室) を「实验」(実験) と「实验室」(実験室) に分割し、両方のトークンは位置 0 を共有します。この変更により、pinyin などの同義語トークナイザーが期待される結果を返すようになります。

    影響:以下の両方の条件が満たされる場合に影響があります。

    1. クエリがフレーズモード (mode=phrase) または自然言語モード (mode=natural_language) を使用している。

    2. トークナイザーが同じ位置でトークンを出力する。典型的なケースは以下の通りです:

      • 詳細な中国語セグメンテーション (jieba(mode=search)):肯定的なクエリはより多くの結果を返します。なぜなら、「实验室」(実験室) の検索は「实验」(実験) を含むドキュメントにも一致するためです。否定的なクエリはより多くを除外します。なぜなら、-实验室 は「数值实验」(数値実験) を含むドキュメントも除外するためです。実質的に、「实验室」(実験室) は「实验」(実験) OR「实验室」(実験室) に展開されます。

      • Pinyin 同義語展開 (pinyin):完全なピンイン liudehua を検索すると、中国語の名前「刘德华」(Liu Dehua) が返されるようになるため、効果は有益です。

    推奨事項:

    1. 新しいインデックスには ik トークナイザーを使用してください。これは Hologres V4.2 からのデフォルトです。ik はより正確にセグメント化し、生成される余分な単一文字 (例:「室」) がアンカーとして機能し、誤った一致を防ぎます。

    2. あるいは、クエリ時に粗粒度のトークナイザーを使用します。例えば、jieba(mode=exact) や ik(mode=ik_smart) などは、通常、同じ位置で重複するトークンを出力しません。一般的な組み合わせは、再現率を最大化するためにインデックス作成に jieba(mode=search) を使用し、フレーズを正確に保つためにクエリに jieba(mode=exact) を使用することです。

V4.1

2026 年 8 月

単一の MaxCompute 外部テーブルから読み取られるファイル数の新しい制限

変更点:Hologres V4.1.34 以降、新しい GUC パラメーター hg_experimental_maxcompute_sdk_split_total_file_count_limit が追加され、デフォルト値は 100,000 です。単一の MaxCompute 外部テーブルが 1 つのクエリ内でこの制限を超えるファイルを読み取ると、クエリはエラーで失敗します。この変更以前は、このパラメーターは存在せず、単一テーブルから読み取られるファイル数に制限はありませんでした。

影響:MaxCompute 外部テーブルをクエリするワークロード、特に多数の小さいファイルを含むテーブルに影響します。制限を超えたクエリはブロックされ、過剰なメモリ使用による OOM のトリガーや、インスタンス上の他のワークロードへの影響を防ぎます。

推奨事項:まず MaxCompute 側で小さいファイルをマージして、各クエリが読み取るファイル数を減らしてください。小さいファイルのマージが当面不可能な場合は、インスタンスの残りのリソースを評価した上で hg_experimental_maxcompute_sdk_split_total_file_count_limit を増やすことができます。値を大きくすると、インスタンスのメモリのウォーターマークが上昇します。実際のワークロードに基づいて控えめに設定し、調整後はメモリ使用量を継続的にモニタリングしてください。

2026 年 3 月

Hologres V4.1 は、カスタムアカウントのデフォルトのパスワード暗号化を MD5 から SCRAM-SHA-256 にアップグレードします。既存のパスワードは自動的に更新されません。V4.1 以降で作成またはパスワードが変更されたアカウントのみが SCRAM-SHA-256 を使用します。

クライアント

最小バージョン

HoloWeb

まだサポートされていません。エラー scram authentication not supported now, please use md5 password を返します。

PostgreSQL JDBC Driver

42.2.0

psql / libpq

PostgreSQL 10

psycopg2 (Python)

2.8

Npgsql (.NET)

3.3

node-postgres (Node.js)

8.0

PgBouncer

1.14

最小バージョン未満のクライアントは、SCRAM-SHA-256 パスワードで認証できません。クライアントをアップグレードするか、MD5 に戻してください:

SET password_encryption = 'md5';
ALTER USER "BASIC$user" WITH PASSWORD 'password';

2026 年 2 月

  • Hologres V4.1.1 以降、REBUILD タスクがテーブルを読み取り専用に設定した後に異常終了した場合、ALTER TABLE <table_name> RESET (ddl_options,write_options) を使用して書き込みアクセスを復元します。これは以前の ALTER TABLE <table_name> SET (readonly = false) コマンドを置き換えるものです。詳細については、「REBUILD」をご参照ください。

  • Hologres V4.1.9 以降、フルテキスト転置インデックスのストレージフォーマットがアップグレードされました。このアップグレードは、これらのインデックスの通常の使用やバージョンアップグレードには影響しません。ただし、Hologres V4.1.9 以降から Hologres V4.0 にダウングレードするには、新しいバージョンで作成されたフルテキスト転置インデックスを事前に削除し、ダウングレード後に手動で再構築する必要があります。

  • Hologres V4.1.11 から、KB レベルの超ワイドカラムの読み書きなど、大規模でメモリ集約的なタスクにサーバーレスコンピューティングを使用する場合、Hologres は自動的により多くのリソースを要求します。サーバーレスコンピューティングリソースの使用率が一貫して高い場合、タスクのキューイング時間が長くなる可能性があります。詳細については、「サーバーレスコンピューティングリソースの管理」をご参照ください。

2026 年 1 月

  • セキュリティとコンプライアンス

    • 強化されたデータマスキング (V2 スキーム):INSERT 操作中、Hologres はデフォルトで基盤となるデータマスキングスキームを使用するようになりました。これにより、ソーステーブルのマスクされたデータがターゲットテーブルに書き込まれ、ターゲットテーブルのマスキングルールの変更から生じる可能性のあるデータ漏えいリスクを軽減します。

  • データアクセス経路とモデリング制約

    • MaxCompute 直接読み取り:Hologres は、MaxCompute 直接読み取りに、より安定した Common Table メカニズムをデフォルトで使用するようになりました。

    • セグメントキーの緩和:Nullable な列がセグメントキーとして使用できるようになり、データモデリングの柔軟性が向上しました。

  • DML とトランザクションの厳格な制約

    • 混合トランザクション操作の禁止:明示的なトランザクションブロック内では、INSERT OVERWRITE または TRUNCATE ステートメントと標準の DML 操作を混在させることは厳密に禁止されています。このルールに違反するとエラーがトリガーされます。エラー例:

      ERROR:  Mixing INSERT OVERWRITE or TRUNCATE with DML statements in a transaction is not supported.
    • 明示的なトランザクションでの DELETE パフォーマンス:トランザクションの整合性を保証し、デッドロックのリスクを軽減するため、明示的なトランザクションを有効にすると (SET hg_experimental_enable_transaction = ON)、全テーブル DELETE 操作の動作が変更されます。これらはファイルレベルの物理削除最適化をバイパスし、行ごとの論理削除として実行されます。ユーザーは潜在的なパフォーマンスへの影響を評価することをお勧めします。

  • メタデータ識別

    • 統計的最適化:table_info の動的テーブルタイプの識別子が DYNAMIC TABLE に標準化されました。

  • 以下の機能はベータ版を卒業し、本番環境での使用が可能な GA (一般提供) となりました:

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 と比較して変更されました。 動的テーブルのリフレッシュリソースを設定する

  • Hologres V4.0.15+ のゲートウェイ接続制限:インスタンスの安定性を向上させるため、仮想ウェアハウスインスタンスのゲートウェイ接続は 8,000 以内に制限されました。

2025 年 9 月

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

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

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

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

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

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

V3.2 (2026 年 8 月)

  • MaxCompute 外部テーブルクエリの RPC サービススレッドのデフォルト数の変更

    変更点:Hologres V3.2.42 以降、RPC サービススレッドパラメーター holo_seahawks_rpc_service_thread_number のデフォルト値が 300 から 150 に変更されました。

    影響:高い QPS で SQE エンジン上で実行される MaxCompute 外部テーブルクエリでは、レイテンシーが中程度に増加します。その代わり、インスタンスはより安定して動作します。外部テーブルクエリは内部テーブルクエリのリソースを競合しなくなり、そのパフォーマンスを低下させることがなくなるため、インスタンス全体の健全性が向上します。

    推奨事項:インスタンスを Hologres V4.1 以降にアップグレードしてください。そのバージョン以降、外部テーブルクエリは新しいエンジンで実行され、安定性を維持しながらより良いクエリパフォーマンスを提供します。

  • 単一の MaxCompute 外部テーブルから読み取られるファイル数の新しい制限

    変更点:Hologres V3.2.43 以降、新しい GUC パラメーター hg_experimental_maxcompute_sdk_split_total_file_count_limit が追加され、デフォルト値は 100,000 です。単一の MaxCompute 外部テーブルが 1 つのクエリ内でこの制限を超えるファイルを読み取ると、クエリはエラーで失敗します。この変更以前は、このパラメーターは存在せず、単一テーブルから読み取られるファイル数に制限はありませんでした。

    影響:MaxCompute 外部テーブルをクエリするワークロード、特に多数の小さいファイルを含むテーブルに影響します。制限を超えたクエリはブロックされ、過剰なメモリ使用による OOM のトリガーや、インスタンス上の他のワークロードへの影響を防ぎます。

    推奨事項:まず MaxCompute 側で小さいファイルをマージして、各クエリが読み取るファイル数を減らしてください。小さいファイルのマージが当面不可能な場合は、インスタンスの残りのリソースを評価した上で hg_experimental_maxcompute_sdk_split_total_file_count_limit を増やすことができます。値を大きくすると、インスタンスのメモリのウォーターマークが上昇します。実際のワークロードに基づいて控えめに設定し、調整後はメモリ使用量を継続的にモニタリングしてください。

V3.2 (2025 年 7 月)

  • Branch、Overwrite、Parameter、Tag などの非予約キーワードが追加されました。また、Lambda や Qualify などの予約キーワードも追加されました。キーワードに関する情報については、「PostgreSQL のキーワード」をご参照ください。

  • Hologres V3.2 以降、CTE の適応的最適化がサポートされます。CTE のマテリアライズ戦略は、optimizer_cte_inlining と hg_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 は強制的に再利用されます。

  • Hologres V3.2 以降、Fast Rows はデフォルトで有効になっています。テーブルに統計情報がない場合、オプティマイザーは自動的に実際の行数を取得して、より良い実行計画を生成します。

    この動作はアップグレード時に自動的に行われ、設定は不要です。詳細については、「ANALYZE と AUTO ANALYZE」をご参照ください。

V3.1 (2026 年 8 月)

  • MaxCompute 外部テーブルクエリの RPC サービススレッドのデフォルト数の変更

    変更点:Hologres V3.1.53 以降、RPC サービススレッドパラメーター holo_seahawks_rpc_service_thread_number のデフォルト値が 300 から 150 に変更されました。

    影響:高い QPS で SQE エンジン上で実行される MaxCompute 外部テーブルクエリでは、レイテンシーが中程度に増加します。その代わり、インスタンスはより安定して動作します。外部テーブルクエリは内部テーブルクエリのリソースを競合しなくなり、そのパフォーマンスを低下させることがなくなるため、インスタンス全体の健全性が向上します。

    推奨事項:インスタンスを Hologres V4.1 以降にアップグレードしてください。そのバージョン以降、外部テーブルクエリは新しいエンジンで実行され、安定性を維持しながらより良いクエリパフォーマンスを提供します。

  • 単一の MaxCompute 外部テーブルから読み取られるファイル数の新しい制限

    変更点:Hologres V3.1.53 以降、新しい GUC パラメーター hg_experimental_maxcompute_sdk_split_total_file_count_limit が追加され、デフォルト値は 100,000 です。単一の MaxCompute 外部テーブルが 1 つのクエリ内でこの制限を超えるファイルを読み取ると、クエリはエラーで失敗します。この変更以前は、このパラメーターは存在せず、単一テーブルから読み取られるファイル数に制限はありませんでした。

    影響:MaxCompute 外部テーブルをクエリするワークロード、特に多数の小さいファイルを含むテーブルに影響します。制限を超えたクエリはブロックされ、過剰なメモリ使用による OOM のトリガーや、インスタンス上の他のワークロードへの影響を防ぎます。

    推奨事項:まず MaxCompute 側で小さいファイルをマージして、各クエリが読み取るファイル数を減らしてください。小さいファイルのマージが当面不可能な場合は、インスタンスの残りのリソースを評価した上で hg_experimental_maxcompute_sdk_split_total_file_count_limit を増やすことができます。値を大きくすると、インスタンスのメモリのウォーターマークが上昇します。実際のワークロードに基づいて控えめに設定し、調整後はメモリ使用量を継続的にモニタリングしてください。

V3.1 (2025 年 5 月)

  • 動的テーブル:

    • 構文

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

    • リソース使用量

      • リフレッシュリソース

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

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

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

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

    • 接続数

      新しい構文では、動的テーブルごとに 1 つの追加接続が維持されます。インスタンスの接続使用率が高く、数百の動的テーブルがある場合は、問題を避けるためにアイドル接続を削除してください。

    • ベーステーブルから増分データを読み取る方法

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

  • クエリキュー機能はベータ段階を完了し、本番環境で利用可能です。詳細については、「クエリキュー」をご参照ください。

  • TRUNCATE は DDL から DML ステートメントになり、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」をご参照ください。

  • 非予約キーワードとして async、logical、purge、recover、rebuild、resume、suspend が追加されました。「PostgreSQL のキーワード」をご参照ください。

V3.0

2026 年 8 月

MaxCompute 外部テーブルクエリの RPC サービススレッドのデフォルト数の変更

変更点:Hologres V3.0.56 以降、RPC サービススレッドパラメーター holo_seahawks_rpc_service_thread_number のデフォルト値が 300 から 150 に変更されました。

影響:高い QPS で SQE エンジン上で実行される MaxCompute 外部テーブルクエリでは、レイテンシーが中程度に増加します。その代わり、インスタンスはより安定して動作します。外部テーブルクエリは内部テーブルクエリのリソースを競合しなくなり、そのパフォーマンスを低下させることがなくなるため、インスタンス全体の健全性が向上します。

推奨事項:インスタンスを Hologres V4.1 以降にアップグレードしてください。そのバージョン以降、外部テーブルクエリは新しいエンジンで実行され、安定性を維持しながらより良いクエリパフォーマンスを提供します。

2025 年 4 月

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

2025 年 2 月

  • Hologres V3.0.23 以降、必要な権限を持たないユーザーは、データベース、スキーマ、またはテーブルのメタデータをクエリできなくなりました。BI や他のツールからの不正なアクセスは、権限エラーを返します。

  • 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 以降、OOM リスクを軽減するため、実行計画メモリは 4 GB (デフォルト) に制限されています。"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 経由での Binlog の消費」をご参照ください。Hologres バイナリログを消費するには、jdbc_fixed モードを使用することを推奨します。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;
    • 以下のサンプルコードは、モニタリングシステムの結果を示しています:

      Query QPS: 4 records
      Failed Query QPS: 1 record

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 外部テーブルにアクセスします。V2.2 以降を購入またはアップグレードする際に、サービスリンクロールを作成し、必要な権限を付与してください。サービスリンクロールは、承認されたクロスサービスアクセスを可能にし、誤操作によるリスクを防ぎます。詳細については、「Hologres のサービスリンクロール」をご参照ください。

  • Hologres V2.2 以降、デフォルトのオプティマイザーポリシーが exhaustive から exhaustive2 に変更され、ほとんどの場合でパフォーマンスが 20%~40% 向上します。left outer join クエリの場合、プランが最適でなくなり、メモリ使用量が増加する可能性があります。元に戻すには、set optimizer_join_order = 'exhaustive'; を実行して exhaustive に切り替えてください。

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

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

  • INSERT OVERWRITE と BSI 関数が一般提供開始となりました。

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

V2.1 (2024 年 6 月)

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

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 経由での Binlog の消費」をご参照ください。

  • ソリューション 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 進数値に対して乗算操作が実行されます。2 つの 10 進数値の乗算結果の小数点前後の合計桁数 (precision_ans) と小数点以下の桁数 (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 経由での Binlog の消費」をご参照ください。

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

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

  • Hologres V2.1 以降、DELETE および UPDATE 操作のコンパクションポリシーが変更され、タグ付けされたファイルを速やかに回収するようになりました。これにより、頻繁に DELETE/UPDATE 操作が行われる列指向テーブルのストレージが削減され、クエリパフォーマンスが向上する可能性があります。V2.1 にアップグレードした後、履歴の小さいファイルのバックグラウンドコンパクションは、かなりの CPU を消費し、ファイル量によっては 10 分以上、あるいは数時間かかる場合があります。

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

  • Hologres V2.1 以降、dlf_fdw 拡張機能は、外部テーブルを使用してデータレイクにアクセスするためにデフォルトで作成されます。dlf_fdw 拡張機能を手動で作成する必要はありません。外部サーバーを作成する際に dlf_region パラメーターを指定する必要はありません。dlf_endpoint、oss_endpoint、および dlf_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_time、proctime、および dynamic。非予約キーワードを 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 経由での Binlog の消費」をご参照ください。

    • ソリューション 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 インスタンスにログインするために使用されるユーザーアカウントに以下の権限セットのいずれかを付与します。デプロイメントが正常に実行されることを確認した後、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) フォーマットのテーブルに変換できます。詳細については、「列指向テーブルのストレージフォーマットのアップグレード」をご参照ください。

  • テーブルグループまたはインスタンスのシャード数に上限が課せられます。これにより、テーブルグループの誤用によるリソースの無駄遣いを防ぎます。詳細については、「テーブルグループとシャードの管理」をご参照ください。

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

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

  • 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 型の値が最適化されました。V1.3.46 より前の Hologres バージョンでは、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
    
    -- V1.3.46 より前の Hologres バージョンでは、次の結果が返されます:
    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 以降では、固定プラン機能のより多くの GUC (Grand Unified Configuration) パラメーターがデフォルトで on に設定されます。これにより、システムの使いやすさとパフォーマンスが向上します。詳細については、「固定プランによる SQL 実行の高速化」をご参照ください。

V1.3 (2022 年 12 月)

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

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

  • Hologres V1.3.31 以降では、デフォルトで Hologres のデータを暗号化し、MaxCompute から暗号化されたデータをクエリできます。追加の設定やチケットの送信は不要です。詳細については、「保存データの暗号化」および「暗号化された 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 の自己診断および自己 O&M 能力を向上させるために、多数のメトリックが追加されました。これらのメトリックは、問題をより正確に特定し、リソース使用量の詳細をクエリするのに役立ちます。これにより、Hologres の全体的な可用性が向上します。メトリックを使用する際には、以下の点に注意してください:

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

  • CPU とメモリのメトリックがより正確に計算されるようになりました。2022 年 7 月の更新後、V1.1 インスタンスの CPU 使用率とメモリ使用量は、CloudMonitor を含め 5%~10% 変動する可能性があります。それに応じてモニタリングのしきい値を再設定してください。

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

V1.1 (2022 年 4 月)

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

Hologres V1.1.53 以降では、メモリ使用量が最適化され、バックエンドの O&M メトリックがより効率的に報告されるようになり、コンピューティングのためにより多くのメモリが解放されます。ビジネス要件に基づいて 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 以降では、子テーブルを親テーブルにアタッチするリクエストを開始した後、子テーブルと親テーブルのプロパティが厳密に検証されます。子テーブルのプロパティが親テーブルのプロパティと一致しない場合、エラーが報告され、アタッチ操作は失敗します。システムが検証するプロパティには、プライマリキー、インデックス、および NOT 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 の制限が撤廃されました。コンピューティング用のメモリは、ノードの使用状況に基づいて動的に割り当てられ、クエリの成功を保証します。有効な実行計画にもかかわらず V1.1.24 以降でメモリ不足エラーが発生した場合は、SQL ステートメントを最適化するか、インスタンスをスケールアップしてください。

説明

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

V1.1 (2021 年 10 月)

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

    V0.10 で導入され、本番環境で実績のある自動分析は、V1.1 の新しいインスタンスではデフォルトで有効になっています。アップグレードされたインスタンスは既存の設定を保持します。V1.1 ではパラメーター名も変更されています:

    元のパラメーター名

    新しいパラメーター名

    デフォルト値

    hg_experimental_enable_start_auto_analyze_worker

    hg_enable_start_auto_analyze_worker

    on

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

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

    V0.10 で導入され、本番環境で実績のあるリシャーディング機能は、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 外部テーブルへの高速アクセスのためのエンジンが変更されました。

    V0.10 で導入された新しい MaxCompute 外部テーブルエンジンは、パフォーマンスを 30% 以上向上させます。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 へのデータのエクスポート」をご参照ください。

    パラメーターの詳細については、「MaxCompute クエリの高速化」をご参照ください。

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

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

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

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

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

    idle_in_transaction_session_timeout パラメーターは、アイドル状態のトランザクションのタイムアウトを指定します。この設定がないと、タイムアウトしたトランザクションはロールバックされず、デッドロックのリスクがあります。V1.1 では、idle_in_transaction_session_timeout のデフォルトは 10 分です。詳細については、「クエリの管理」をご参照ください。