このトピックでは、各 Hologres バージョンにおけるデフォルト動作の変更点について説明します。
パラメーター名の変更は下位互換性のある変更です。旧パラメーター名は引き続きサポートされますが、新しいパラメーター名の使用を推奨します。
Hologres V4.1 のデフォルト動作の変更点
2026 年 2 月
-
Hologres V4.1.9 以降、全文検索用転置インデックスのストレージ形式がアップグレードされます。この変更は、全文検索用転置インデックスの通常利用およびバージョンアップに影響しません。ただし、Hologres V4.1.9 以降から Hologres V4.0 へのスペックダウンを行う場合、まず新バージョンで作成された全文検索用転置インデックスをすべて削除し、その後手動で再構築する必要があります。
-
Hologres V4.1.11 以降、KB 級の超ワイドカラムの読み取り・書き込みなど、大規模かつ高メモリを要するタスクに対してサーバーレスコンピューティングを使用する場合、システムが自動的に追加のリソースを要求します。サーバーレスコンピューティングのリソースクォータ使用率が継続的に高い場合、タスクのキュー待ち時間が長くなる可能性があります。詳細については、「サーバーレスコンピューティングリソースの管理」をご参照ください。
2026 年 1 月
-
セキュリティとコンプライアンスの変更点
-
強化されたデータマスキング(V2 スキーム):INSERT 操作時に、Hologres がデフォルトでデータマスキングスキームを適用します。これにより、ソーステーブルからマスクされたデータがターゲットテーブルに書き込まれ、ターゲットテーブルのマスキングルールが変更された場合のデータ漏えいリスクを軽減します。
-
-
パスウェイおよびデータモデリング制約の調整
-
MaxCompute 直接読み取りパスウェイのデフォルト設定:システムは、安定性と互換性が向上した「Common Table パスウェイ」をデフォルトで使用するようになりました。
-
セグメントキー制約の緩和:NULL を許容するカラムをセグメントキーとして指定できるようになりました。これにより、データモデリングの柔軟性が大幅に向上します。
-
-
DML およびトランザクション制約の厳格化
-
混合トランザクション操作の禁止:明示的なトランザクションブロック内では、
INSERT OVERWRITEまたはTRUNCATEステートメントと標準 DML 操作を混在させることは禁止されています。この操作を実行すると、以下のエラーが発生します:ERROR: トランザクション内で INSERT OVERWRITE または TRUNCATE を DML ステートメントと混在させることはサポートされていません。 -
明示的なトランザクションにおける DELETE のパフォーマンス:トランザクションの整合性を確保し、デッドロックのリスクを低減するため、明示的なトランザクションの有効化(
set hg_experimental_enable_transaction = onの設定)により、フルテーブルDELETE操作の動作が変更されます。ファイルレベルの物理削除最適化をバイパスし、行単位の論理削除として実行されるようになります。潜在的なパフォーマンスへの影響を評価してください。
-
-
メタデータ識別子
-
統計情報の最適化:
table_infoにおいて、Dynamic Table のタイプ識別子がDYNAMIC TABLEに標準化され、識別および管理が容易になりました。
-
-
以下の機能が一般提供(GA)となりました:
Hologres V4.0 のデフォルト動作の変更点
2025 年 11 月
-
全文検索用転置インデックスを持つテーブルへのリアルタイムデータ書き込みにおけるインデックス作成動作が変更されました。Hologres V4.0.8 より前では、データ書き込み時に同期的にインデックスが構築されていました。Hologres V4.0.8 以降では、書き込み効率およびインデックス作成パフォーマンスを向上させるため、インメモリインデックスが 1 秒間隔で非同期に更新されるようになりました。新規データは、更新後にのみインデックス経由で検索可能となります。
-
Dynamic Table に関する動作変更点:
-
Hologres V4.0.7 以降、仮想ウェアハウスインスタンス上で、computing_resource プロパティを使用して warehouse_name を指定することで、リフレッシュタスクを特定の仮想ウェアハウスに割り当てられるようになりました。
-
Hologres V4.0.7 以降、V3.1、V3.2、および V4.0.1~V4.0.6 と比較して、Dynamic Table のデフォルトリフレッシュリソースが変更されています。変更内容およびその使用方法の詳細については、「Dynamic Table のリフレッシュリソースの設定」をご参照ください。
-
-
Hologres V4.0.15 以降、高頻度のクライアント接続がインスタンスの安定性に与える影響を防止するため、仮想ウェアハウスインスタンスにおける単一ゲートウェイの接続数上限が、無制限から 8,000 に変更されました。
2025 年 9 月
-
Hologres V4.0 以降、新規 Hologres インスタンスは、MaxCompute 外部テーブルを照会する際にデフォルトで Common Table メカニズムを使用するようになりました。このメカニズムは、顕著なパフォーマンス向上を実現し、MaxCompute Delta Tables および Append 2.0 Tables のサポートも追加しています。詳細については、「Common Table メカニズムに基づく MaxCompute データへのアクセス」をご参照ください。
-
Hologres V4.0 以降、MaxCompute からの直接接続におけるデフォルトのデータ新鮮さ(freshness)は 1 分となりました。データ新鮮さを変更するには、以下の SQL ステートメントを実行します。
-- データベースレベルで新鮮さを変更
ALTER DATABASE <database_name> set hg_create_table_snapshot_default_freshness_in_sec=xxx;
-
hg_serverless_computing_run_compaction_before_commit_bulk_loadパラメーターがデフォルトで有効化されました。これにより、サーバーレスコンピューティングによるデータインポート時に同期コンパクションが保証され、インスタンスリソースへの負荷が軽減されます。詳細については、「サーバーレスコンピューティングを使用したコンパクションタスクの実行」をご参照ください。 -
Data Lake Formation (DLF) 上で
CREATE EXTERNAL TABLEを使用してテーブルを作成する場合、デフォルトのファイル形式が ORC から Paimon SDK によって決定される形式に変更されました。詳細については、「CREATE EXTERNAL TABLE」をご参照ください。 -
Hologres は、PQE を使用する SQL クエリに対してシングルノードメモリ保護を提供するようになりました。インスタンスの安定性に影響を与える可能性のあるクエリは、今後メモリ不足(OOM)エラーをトリガーする場合があります。これは、ワーカーノードのフェイルオーバーによるインスタンス不安定化を防止するための措置です。
-
Hologres V4.0 以降、フルリフレッシュモードで作成された Dynamic Table は、デフォルトで Adaptive Execution を使用するようになりました。この機能により、ピークリソース消費量が削減され、大規模タスクの安定性が向上します。また、より正確なリソース見積もりによるコスト削減や、不正確な統計情報を考慮して実行中にクエリプランを動的に調整することによる、サブオプティマルなクエリプランのリスク低減も実現します。
V3.2 デフォルトの動作の変更(2025 年 7 月)
-
予約されていないキーワードとして Branch、Overwrite、Parameter、Tag が追加され、予約キーワードとして Lambda および Qualify が追加されました。キーワードの詳細については、「PostgreSQL キーワード」をご参照ください。
-
Hologres V3.2 では、CTE(共通テーブル式)に対する適応的最適化戦略が導入されました。この戦略は、2 つの独立した GUC パラメーターである optimizer_cte_inlining および hg_cte_strategy によって制御され、任意の順序で設定できます。動作は以下のとおりです:
-
optimizer_cte_inlining = offの場合、CTE 戦略は Reuse(変更なし、hg_cte_strategy の影響を受けない)となります。 -
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 のデフォルト動作の変更 (2025 年 5 月)
-
Dynamic Table の動作変更点:
-
構文の変更
Hologres V3.1 では、Dynamic Table のためのより簡潔な構文が導入されました。V3.0 からのアップグレード後、完全データリフレッシュを使用する Dynamic Table は ALTER 操作のみをサポートします。新規テーブルの作成には V3.1 構文を使用する必要があります。増分データリフレッシュを使用するテーブルは、新構文で再作成する必要があります。詳細については、「CREATE DYNAMIC TABLE」をご参照ください。
-
リソース使用量の変更
-
リフレッシュリソース
デフォルトで、Hologres V3.1 で作成された Dynamic Table はサーバーレスリソースを使用します。インスタンスでサーバーレスリソースが有効化されていない場合、システムは自動的にインスタンスリソースにフォールバックします。V3.0 で作成されたテーブルは、作成時に指定されたリソースを引き続き使用します。詳細については、「CREATE DYNAMIC TABLE」をご参照ください。
-
インスタンスリソースを使用して作成する場合:
-
計算リソースグループを使用するインスタンスで新構文(V3.1 および V3.2)を使用する場合、ベーステーブルおよび Dynamic Table のテーブルグループ(TG)のリーダーノードのウェアハウスリソースが使用されます。
-
旧構文(V3.0)を使用する場合、または計算リソースグループを使用する V4.1 インスタンスで新構文を使用する場合、Dynamic Table の TG のリーダーノードのウェアハウスリソースが使用されます。
-
-
-
接続数の変更
新構文は、より安定かつ効率的な基盤となるスケジューリングメカニズムを使用するため、Dynamic Table ごとに 1 接続分の余分な接続が必要となります。インスタンスの接続使用率が高く、数百の Dynamic Table が存在する場合、まずアイドル接続をクリアすることを推奨します。
-
増分データリフレッシュにおけるデータ消費量
Hologres V3.1 では、ベーステーブルのデータ変更を識別するためのストリームモードが導入されました。バイナリログを使用する場合と比較して、ストリームモードはより高いパフォーマンスとコスト効率を実現します。V3.1 へのアップグレード後、Hologres はデフォルトでストリームモードを使用します。V3.0 でテーブルのバイナリログが有効化されていた場合、不要なストレージコストを回避するために、速やかに無効化してください。詳細については、「Dynamic Table」をご参照ください。
-
-
クエリキュー機能が本番環境での使用に向け一般提供(GA)となりました。詳細については、「クエリキュー」をご参照ください。
-
TRUNCATE ステートメントは、FE ノードへの負荷を軽減するため、DDL ステートメントではなく DML ステートメントとして機能するようになりました。DDL 動作を維持するには、
hg_enable_truncate_as_dmlGUC パラメーターを無効化してください。ただし、バイナリログが有効化されているテーブルに対して TRUNCATE ステートメントを実行する場合、セッションレベルでバイナリログを無効化する必要があります。詳細については、「TRUNCATE」をご参照ください。 -
主キーを持つテーブルにデータをインポートする際に COPY ステートメントを使用する場合、
hg_experimental_copy_enable_on_conflictGUC パラメーターがデフォルトで有効化され、インポート時のデータ更新ポリシーを指定できるようになりました。詳細については、「COPY」をご参照ください。 -
INSERT OVERWRITE 機能を使用する場合、SQL(標準 SELECT ステートメント)で指定されたカラム数およびデータ型は、
target_table(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システムテーブルが更新されました。V3.1 以降、このテーブルはメモリテーブルのデータを含まなくなり、テーブルの実際のストレージのみを計算するようになりました。メモリテーブルの動作メカニズムの詳細については、「INSERT」をご参照ください。 -
Hologres V3.1 では、以下の予約されていないキーワードが追加されました:async、logical、purge、recover、rebuild、resume、suspend。キーワードの詳細については、「ドキュメント」をご参照ください。
Hologres 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を含むステートメントを実行すると、以下のエラーが返されます: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)にフォールバックします。以下に、フィルター条件における組み合わせ数の算出例を示します:
-- 組み合わせ数:3
WHERE (pk1 = 1 AND pk2 = 1) OR (pk1 = 2 AND pk2 = 2) OR (pk1 = 3 AND pk2 = 3);
-- 組み合わせ数:3 * 3 = 9
WHERE pk1 IN (1, 2, 3) AND pk2 IN (1,2,3);
2024 年 9 月
-
SQL Hint が一般提供(GA)となり、デフォルトで有効化されました。
-
メタデータウェアハウスでは、各 COPY 操作が 1 件ではなく 2 件のレコードを生成するようになりました。詳細については、「COPY」をご参照ください。
-
Hologres V3.0.10 以降、仮想ウェアハウスインスタンス内の各仮想ウェアハウスの最大サイズが、512 CU から 1,024 CU に引き上げられました。
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が返されます。ユーザーがバイナリログを消費できるようにするには、そのユーザーのデータマスキング設定を無効化する必要があります。以下のいずれかのステートメントを実行できます:重要現在のチェックは、以下のデータマスキング設定のみに関連しており、
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)エラーのリスクを低減するため、Hologres は実行計画が要求できるメモリ量を制限するようになりました。この制限はデフォルトで 4 GB です。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月)
JDBC 経由で Hologres バイナリログを消費する場合、walsender クォータがワーカーあたり 1,000 スロットから 600 スロットに削減されました。詳細については、「JDBC 経由でのバイナリログの消費」をご参照ください。バイナリログの消費には、jdbc_fixed モードの使用を推奨します。JDBC モードとは異なり、jdbc_fixed モードは接続を一切使用せず、walsender クォータの対象外となります。jdbc_fixed モードの詳細については、「Hologres」をご参照ください。
V2.2 のデフォルト動作の変更(2024 年 6 月)
Hologres V2.2 では、スロークエリログ の収集機能が強化されました。この基盤となるアップグレードは自動的に適用され、手動での設定は不要です。新しいログは、より豊富な情報をキャプチャし、インスタンス上のクエリワークロードをより詳細に管理できるようになります。
-
スロークエリログは、構文エラー、実行計画解析失敗、権限不足などにより失敗したクエリをより多くキャプチャするようになりました。V2.2 より前のバージョンでは、これらのクエリは収集されませんでした。これらの失敗クエリの管理には、「SQL 診断」の使用を推奨します。
-
トランザクションに
BEGIN; DROP TABLE xxx; COMMIT;のような複数の DDL ステートメントが含まれる場合、システムはスロークエリログに、完全なクエリを含む単一のレコードとして記録します。ただし、モニタリングでは「Query 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 以降、
table propertiesのhg_dump_script出力における構文が、CALL 構文からWITH 構文に変更されました。この変更により、テーブル作成が簡素化され、可読性が向上します。詳細については、「CREATE TABLE」をご参照ください。 -
Hologres V2.2.7 以降、
INSERT、SELECT、UPDATE、DELETEなどの SQL ステートメントがスロークエリログに記録されるためのデフォルト最小実行時間は、1 秒から 100 ミリ秒に変更されました。詳細については、「スロークエリログの表示と分析」をご参照ください。 -
Hologres V2.2.9 以降、固定プランのポイントクエリ(キー/バリュー シナリオ) の結果はランダムな順序で返されるようになり、
WHERE 句内のプライマリキーの順序と一致しなくなりました。
V2.2 デフォルトの動作の変更 (2024年4月)
-
Hologres V2.2 では、MaxCompute 外部テーブルへのアクセス認証に、サービスリンクロール(SLR)がデフォルトで使用されるようになりました。新規インスタンスの購入または既存インスタンスの V2.2 へのアップグレード時に、サービスリンクロールの承認が必要です。SLR は、Alibaba Cloud サービスが他サービスとの間で認可を行うために信頼する RAM ロールであり、より正確な権限設定を可能にし、運用ミスのリスクを低減します。詳細については、「Hologres サービスリンクロール」をご参照ください。
-
V2.2 では、デフォルトのオプティマイザーポリシーが
exhaustiveからexhaustive2に変更されました。この変更により、ほとんどのシナリオでパフォーマンスが 20%~40% 向上します。ただし、一部のクエリではleft outer join操作によりサブオプティマルな実行計画が生成され、一部のジョブでメモリ使用量が増加する場合があります。この問題が発生した場合、ジョブのオプティマイザーポリシーを手動で exhaustive に復元するため、set optimizer_join_order = 'exhaustive';を実行できます。 -
Hologres V2.2 では、スロークエリログにおける固定プランパスウェイのエンジンタイプ名が SDK から FixedQE に変更されました。この変更により、FixedQE メトリックと名称が一致します。
-
Hologres V2.2 では、単一フロントエンドノードの接続数が 128 から 256 に増加しました。これにより、接続数の合計が倍増します。詳細については、「インスタンス管理」をご参照ください。
-
INSERT OVERWRITE および BSI 関数 がベータ版から卒業し、一般提供(GA)となりました。
-
Hologres V2.2 では、
SELECT hg_dump_script()ステートメントが、CALL 構文ではなく WITH 構文でテーブル作成プロパティを返すようになりました。この変更により、生成されたスクリプトの可読性および使いやすさが向上します。詳細については、「CREATE TABLE」をご参照ください。
Hologres V2.1 のデフォルト動作の変更点(2024 年 6 月)
Hologres V2.1.27 および Realtime Compute for Apache Flink VVR 8.0.7 以降、Hologres バイナリログの消費のデフォルトモードが JDBC モードから jdbc_fixed モードにアップグレードされました。jdbc_fixed モードは JDBC モードとは異なり、接続を使用せず、walsender クォータの対象外となります。jdbc_fixed モードの詳細については、「Hologres」をご参照ください。JDBC モードの詳細については、「JDBC 経由でのバイナリログの消費」をご参照ください。
Hologres V2.1 のデフォルト動作の変更点(2024 年 3 月)
Realtime Compute for Apache Flink を使用して Hologres バイナリログを消費する場合、HoloHub モード('sdkMode'='holohub')はサポートされなくなりました。すべての消費は、より安定したデプロイメントを提供し、より広範なデータ型をサポートする JDBC モードで行われるようになりました。Hologres インスタンスを V2.1 にアップグレードする前に、以下のいずれかのオプションを選択して、Flink デプロイメントが正しく継続して実行されることを確認してください。詳細については、「JDBC を使用した Hologres バイナリログの消費」をご参照ください。
-
オプション 1(推奨):Flink VVR バージョンを 8.0.7 以降にアップグレードします。Flink が自動的に HoloHub モードから JDBC モードに切り替わります。
-
オプション 2:Flink VVR バージョンを 6.0.7~8.0.5 のいずれかのバージョンにアップグレードします。ソーステーブルに
'sdkMode'='jdbc'パラメーターを追加し、デプロイメントを再起動します。また、ユーザーに 以下のいずれかの権限 を付与する必要があります。デプロイメントが正しく実行されることを確認した後、Hologres インスタンスをアップグレードできます。-
オプション 1:インスタンスに対するスーパーユーザ権限。
-
オプション 2:ターゲットテーブルに対する所有者権限、CREATE DATABASE 権限、およびインスタンスに対するレプリケーションロール権限。
-
-
オプション 3(推奨しません):Flink VVR バージョンを 8.0.6 にアップグレードします。Flink が自動的に HoloHub モードから JDBC モードに切り替わります。ただし、Flink VVR 8.0.6 には、ディメンションテーブルに多数のフィールドが含まれる場合にデプロイメントタイムアウトを引き起こす既知の問題があります。詳細については、「Hologres コネクタ リリースノート」をご参照ください。
-
オプション(任意):多数の Flink VVR デプロイメントがある場合、「HoloHub モードから JDBC モードへの切り替え」を参照して、アップグレードが必要なデプロイメントおよびテーブルを特定できます。
V2.1 (2024年2月) におけるデフォルトの動作の変更点
Hologres V2.1.19 では、DECIMAL 型に対する乗算および除算の処理方法が修正されました。V2.1.19 より前のバージョンでは、DECIMAL 型の算術演算は小数点以下 18 桁までしかサポートされていませんでした。乗算または除算の結果が小数点以下 18 桁を超える場合、Hologres は計算前にデータを切り捨てており、誤った結果を生成していました。
例えば、2 つの DECIMAL 値の乗算操作において、結果の精度(precision_ans:桁数の合計)およびスケール(scale_ans:小数点以下の桁数)は、以下の式で決定されます:
precision_ans = precision_l + precision_r
scale_ans = scale_l + scale_r
計算された scale_ans が 18 を超える場合、Hologres は以下のルールに基づいて各乗数を事前に切り捨てていました:
-
scale_l <= 9の場合、計算に使用される小数点以下の桁数はscale_lです。 -
scale_l > 9の場合、計算に使用される小数点以下の桁数はmax(9,18-scale_r)です。 -
scale_r <= 9の場合、計算に使用される小数点以下の桁数はscale_rです。 -
scale_r > 9の場合、計算に使用される小数点以下の桁数は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 は乗算前に値を切り捨てていました。この早期の切り捨てにより精度が失われ、誤った結果が生成されました:
-- 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 -
V2.1.19 以降では、この動作が修正されました。Hologres は、まず乗算を実行し、その後指定された精度に結果を切り捨てるようになりました。この方法により、早期の切り捨てによる精度損失が防止されます:
-- 正しい結果 1.1111111111, 1.0000000000,1.111111111100000000 1.1111111112, 1.0000000000,1.111111111200000000
V2.1 動作の変更 (2023年10月)
機能強化
-
Hologres V2.1.12 以降、固定プランを使用して DECIMAL カラムにデータを書き込む場合、ソースの精度がターゲットカラムの精度よりも高い場合、データが切り捨てではなく四捨五入されるようになりました。以前のバージョンでは、データは切り捨てられていました。以下の例は、この変更を示しています:
説明Hologres V2.1.12 以降、この変更は固定プランの有無にかかわらず書き込みに適用されます。
CREATE TABLE fixed_plan_decimal (col DECIMAL(3,2)); -- V2.1.12 以降では、2.56 が書き込まれます。以前のバージョンでは、2.55 が書き込まれます。 INSERT INTO fixed_plan_decimal VALUES (2.555); -- すべてのバージョンで、2.55 が書き込まれます。 INSERT INTO fixed_plan_decimal VALUES (2.554); -
Hologres Binlog の消費に必要な権限要件が更新されました。現在は、ターゲットテーブルに対する読み取り権限のみが必要です。詳細については、「JDBC を使用した Hologres Binlog の消費」をご参照ください。
-
配布キーのない Hologres 内部テーブルにデータをバルクロードでインポートする場合、インポートパフォーマンスが低下する可能性があります。
-
Hologres V2.1 以降、
CREATE TABLE ... WITH (...)構文を使用してテーブルを作成できるようになりました。これにより、テーブルプロパティの構成が簡素化されます。詳細については、「CREATE TABLE」をご参照ください。 -
Hologres V2.1 以降、DELETE および UPDATE 操作に対するコンパクションポリシーが変更され、削除マーク付きファイルをより迅速に回収するようになりました。この変更により、頻繁な DELETE および UPDATE 操作を伴う列指向テーブルのストレージ使用量が削減され、クエリパフォーマンスが向上します。V2.1 への初回アップグレード時に、Hologres は履歴の断片化された小さなファイルに対して 1 回限りのバックグラウンドコンパクションを実行します。この処理は多量の CPU リソースを消費し、これらのファイルの量に応じて数分から数時間かかる場合があります。
-
バージョン V2.1 以降、Hologres は
INSERT INTO <table_name> ON CONFLICT(<col_name>,...) DO構文を使用する際に、CONFLICT句の列をチェックします。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。
-
-
-
Hologres V2.1 では、
system_time、proctime、dynamicの 3 つの新しい予約されていないキーワードが追加されました。これらのキーワードはカラム名として使用できませんが、エイリアスとして使用できます。エイリアスとして使用する場合、ASキーワードの使用が必須です。以下の例は、この変更を示しています:-- V2.0 およびそれ以前では、以下のステートメントは正常に実行されます。 SELECT xxxx SYSTEM_TIME FROM t; SELECT xxxx AS SYSTEM_TIME FROM t; -- V2.1 以降では、これらのキーワードはエイリアスとしてのみ使用可能であり、AS キーワードの使用が必須です。 SELECT xxxx AS SYSTEM_TIME FROM t;
V2.0 デフォルトの動作の変更(2023年6月)
機能強化
-
Flink における Hologres バイナリログの消費モードがアップグレードされました。JDBC モードが完全にサポートされ、HoloHub モード(
'sdkMode'='holohub')は段階的に廃止されています。HoloHub モードと比較して、JDBC モードはより安定したデプロイメントを提供し、より広範なデータ型をサポートします。Hologres インスタンスを V2.0 にアップグレードする前に、以下の 3 つのオプションのいずれかを選択して、Flink デプロイメントおよび Hologres インスタンスを確認し、デプロイメントが引き続き正しく実行されることを保証してください。詳細については、「JDBC を使用したバイナリログの消費」をご参照ください。-
オプション 1(推奨):VVR バージョンを 8.0.6 以降にアップグレードします。Flink が自動的に HoloHub モードから JDBC モードに切り替わります。ただし、VVR 8.0.6 には、ディメンションテーブルに過剰なフィールドが含まれる場合にデプロイメントがタイムアウトする既知の問題があります。詳細については、「Hologres コネクタ リリースノート」をご参照ください。VVR 8.0.7 の使用を推奨します。
-
オプション 2:VVR バージョンを 8.0.4 または 8.0.5 にアップグレードし、Flink デプロイメントを再起動します。また、ユーザーに 以下のいずれかの権限オプション を付与する必要があります。デプロイメントが正しく実行されることを確認した後、Hologres インスタンスをアップグレードできます。
-
インスタンスに対するスーパーユーザ権限。
-
ターゲットテーブルに対する所有者権限、CREATE DATABASE 権限、およびインスタンスに対するレプリケーションロール権限。
-
-
オプション 3:VVR バージョンを 6.0.7~8.0.3 のいずれかのバージョンにアップグレードします。この場合、Flink は引き続き HoloHub モードを使用してバイナリログを消費します。
-
-
Flink のディメンションテーブルおよび結果テーブルは、RPC モード(
'sdkMode'='rpc'または'rpcMode'='true')をサポートしなくなり、JDBC モードに完全に切り替わりました。Hologres インスタンスを V2.0 にアップグレードする前に、Flink ジョブおよび Hologres インスタンスを確認し、Flink ジョブが正しく実行されることを保証してください。詳細については、「Hologres」をご参照ください。-
VVR バージョンが 6.0.7 以降の場合、Flink が自動的に RPC モードから JDBC モードに切り替わります。
-
Flink VVR バージョンが 6.0.3~6.0.6 の場合、Flink ジョブ内の
'sdkMode'='rpc'パラメーターを'sdkMode'='jdbc'に変更するか、'rpcMode'='true'パラメーターを'rpcMode'='false'に変更する必要があります。 -
Flink VVR が 6.0.2 以前の場合、Flink ジョブ内の
'rpcMode'='true'パラメーターを'rpcMode'='false'に変更する必要があります。 -
インスタンスの接続数が不足している場合、
connectionPoolNameパラメーターを設定して接続プールを共有するか、Flink VVR バージョンを 6.0.7 以降にアップグレードして'sdkMode'='jdbc_fixed'モードを使用できます。このモードは接続を一切占有しません。 -
RPC モードでは、同一バッチ内の同一プライマリキーを持つデータの重複排除は行われませんが、JDBC モードでは自動的に重複排除が行われます。ビジネス要件で全データを保持する必要がある場合、
'jdbcWriteBatchSize'='1'を設定することで重複排除を防止できます。
-
-
Hologres V2.0 では、リアルタイムのポイントクエリまたは書き込みに Blink を使用することはサポートされなくなりました。Hologres インスタンスをアップグレードする前に、Blink デプロイメントを Flink に移行することを推奨します。
Hologres V2.0 のデフォルト動作の変更点(2023 年 4 月)
機能強化
-
列指向ストレージは、Segment ストレージ形式をサポートしなくなりました。Segment 形式のテーブルを持つインスタンスは、V2.0 以降にアップグレードできません。テーブル形式を一括で変換するには、
hg_convert_segment_orcユーティリティ関数を使用できます。詳細については、「列指向テーブルのデータストレージ形式の変更」をご参照ください。 -
テーブルグループの誤用によるリソース浪費を防止するため、Hologres V2.0 では、テーブルグループおよびインスタンスごとのシャード数の合計上限が導入されました。詳細については、「テーブルグループおよびシャード数の管理」をご参照ください。
-
DataHub へのデータ書き込みは、レガシ SDK から、より安定かつ広範なデータ型をサポートする JDBC モードに完全に移行しました。
-
バイナリログ拡張機能はデフォルトで読み込まれるようになったため、JDBC を使用してバイナリログを消費する際に、手動で作成する必要はなくなりました。この目的のための WAL sender のデフォルトクォータは、200 スロット/32 CU から 2,000 スロット/32 CU に 10 倍増加しました。詳細については、「JDBC を使用した Hologres バイナリログの消費」をご参照ください。
-
インスタンスのアップグレード後、新しい Auto Analyze 機能が、統計情報が欠落しているテーブルに対して統計情報を収集します。この処理は一定量の CPU リソースを消費し、対象テーブルの数に応じて数分から数時間かかる場合があります。
-
バックアップおよび復元機能、および階層化ストレージ機能がベータ版から卒業し、一般提供となりました。
-
シャードレベルのレプリケーション機能がベータ版から卒業し、一般提供となりました。詳細については、「単一インスタンスのシャードレベルレプリケーション」をご参照ください。
-
テーブルプロパティを設定するパラメーターが標準化されました。これにより、大文字を含むカラム名に対するプロパティ設定の構文が変更されました。詳細については、「CREATE TABLE」をご参照ください。
bitmap_columnsプロパティはautoに設定できなくなりました。この変更は既存のテーブルには影響しません。 -
HG_CREATE_TABLE_LIKE関数は、CREATE INDEX で作成されたインデックス、SERIAL 型のカラム、および Proxima ベクターカラムを継承できるようになりました。
V1.3: デフォルト動作の変更
-
Hologres V1.3.53 以降、レプリカ数はワーカー数を超えることができません。詳細については、「高スループットのためのシャードレベルレプリケーション(ベータ)」をご参照ください。
-
Avg 関数の最適化:Hologres V1.3 以降、Avg 関数は完全な精度の結果を返すようになりました。以前は、結果が小数点以下 6 桁に切り捨てられていました。
-
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; -- V1.3.46 以降の結果: a | b |b --+-------------+------ 1 |0.0000000000 |0.0000000000 1 |1.0000000000 |1.0000000000 -- V1.3.46 より前のバージョンの結果: a | b |b --+-------------+------ 1 |0.0000000000 |0.E-10 1 |1.0000000000 |1.0000000000
V1.3 デフォルト動作の変更 (2023年2月)
機能強化
Hologres V1.3.36 以降、スキーマレベルの簡易権限モデル(SLPM)下で、スキーマ間ビューを作成できるようになりました。詳細については、「SLPM の使用」をご参照ください。
V1.3 デフォルト動作の変更 (2023 年 1 月)
機能強化
-
Segment 形式のテーブルは、Hologres V2.0 以降ではサポートされなくなります。Hologres V1.3.35 では、既存のテーブルを Segment 形式から ORC 形式に一括変換するステートメントが提供されています。詳細については、「列指向テーブルのストレージ形式のアップグレード」をご参照ください。この形式変換が完了するまで、インスタンスは後続バージョンへのアップグレードができません。
-
Hologres V1.3.35 以降、Fixed Plan シナリオ向けのより多くの GUC パラメーターが、使いやすさおよびパフォーマンス向上のためデフォルトで
onに設定されるようになりました。詳細については、「Fixed Plan による SQL 実行の高速化」をご参照ください。
V1.3 デフォルト動作の変更点 (2022年12月)
機能強化
-
2022 年 12 月 26 日 以降、新規インスタンス(バックアップからの復元インスタンスを含む)には、VPC エンドポイントが付属しなくなりました。代わりに、購入時に選択した VPC にのみ接続する、より安全な 指定 VPC エンドポイントが使用されるようになりました。これにより、セキュリティおよび分離性が向上します。既存のインスタンスには影響ありません。元の VPC エンドポイントを無効化し、指定 VPC エンドポイントに切り替えることを推奨します。
-
Hologres V1.3.31 以降、Hologres の保管時の暗号化および暗号化された MaxCompute データの照会がデフォルトで有効化されました。これらの機能は自動的に動作し、追加の設定やサポートリクエストは不要です。詳細については、「保管時の暗号化」および「暗号化された MaxCompute データの照会」をご参照ください。
Hologres V1.3 のデフォルト動作の変更点(2022 年 11 月)
機能強化
-
Hologres V1.3.28 以降、クラスタリングキーまたはセグメントキーとして設定されたカラムは、
nullableにできなくなりました。詳細については、「クラスタリングキー」および「イベント時刻カラム(セグメントキー)」をご参照ください。 -
Hologres V1.3.28 以降、MaxCompute 外部テーブルの自動読み込みのための
hg_experimental_load_all_foreign_table_interval_timeパラメーターの値が、5minから30minに変更されました。詳細については、「外部テーブルの自動読み込み(Auto Load)」をご参照ください。 -
Hologres V1.3.28 以降、分散キーは NULL にできなくなりました。詳細については、「分散キー」をご参照ください。
-
Hologres V1.3.27 以降、マルチインスタンス高可用性デプロイメントにおける同期遅延のしきい値が、
20分から60分に引き上げられました。同期遅延が 60 分を超えると、セカンダリインスタンスが自動的に再起動します。詳細については、「マルチインスタンス高可用性デプロイメント」をご参照ください。
Hologres V1.3 のデフォルト動作の変更点(2022 年 10 月)
機能強化
-
Hologres V1.3.24 以降、hg_worker_info システムビューを使用して、ワーカーノード間でのシャードの割り当て状況を照会できるようになりました。このビューは、ワークロードの偏りを解決するのに役立ちます。詳細については、「ワークロードの偏りの検出および対応」をご参照ください。
-
Hologres V1.3.24 以降、テーブルデータの最小生存時間(TTL)は 1 日(86,400 秒)となりました。詳細については、「その他の PostgreSQL ステートメント」をご参照ください。
-
Hologres V1.3.24 以降、バイナリログが有効化されている場合、
pg_relation_size関数の結果には、バイナリログのストレージサイズが含まれるようになりました。詳細については、「テーブルおよびデータベースのストレージサイズの照会」をご参照ください。 -
Hologres V1.3.24 以降、子テーブルのバイナリログ生存時間(TTL)を変更できるようになりました。詳細については、「バイナリログレプリケーションの設定」をご参照ください。
Hologres V1.3 のデフォルト動作の変更点(2022 年 9 月)
機能強化
-
Hologres V1.3.23 以降、生存時間(TTL)が切れた重複プライマリキーによるデータインポート失敗を、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」をご参照ください。
Hologres V1.3 のデフォルト動作の変更点(2022 年 7 月)
機能強化
-
JSON 関連機能がパブリックプレビューから一般提供(GA)となりました。
-
PostGIS 関連機能がパブリックプレビューから一般提供(GA)となりました。
-
Data Integration や Realtime Compute for Apache Flink などのサービスを使用してデータをインポートする場合、SDK による書き込みから SQL(INSERT)による書き込みへと書き込み方法を変更することを推奨します。
Hologres V1.1 のデフォルト動作の変更点
2022 年 7 月、Hologres は自己診断および自己 O&M を改善するための新たなメトリックを導入しました。これらのメトリックにより、問題の特定、リソース使用量の監視、およびシステム可用性の向上が可能になります。
-
これらのメトリックは、Hologres V1.1 以降でのみ利用可能です。Hologres インスタンスがそれより前のバージョンで実行されている場合、「手動アップグレード(ベータ)」をご参照いただくか、Hologres DingTalk グループに参加してサポートを受けてください。詳細については、「オンラインサポートの受け方?」をご参照ください。
-
CPU およびメモリメトリックの計算がより正確になり、リソース使用量の評価が向上しました。アップデート後、Hologres V1.1 インスタンスの CPU 使用率およびメモリ使用率に変動が見られる場合があります。5%~10% の変動は正常です。CloudMonitor にもこれらの変化が反映されます。CloudMonitor のアラートを確認し、モニタリングのしきい値を調整することを推奨します。
詳細については、「Hologres コンソールにおけるメトリック」をご参照ください。
V1.1 のデフォルト動作の変更 (2022 年 4 月)
メモリ最適化
V1.1.53 以降、Hologres はメモリ使用量を最適化し、O&M メトリックのバックエンド報告を改善しました。この変更により、以前のバージョンと比較して常駐メモリのフットプリントが削減され、計算に使用できるメモリが増加します。これらの改善を活用するには、Hologres インスタンスを V1.1.53 にアップグレードしてください。
V1.1 デフォルト動作の変更 (2022年3月)
固定プランによるポイントクエリの最適化
バージョン 1.1.49 以降、Hologres は固定プランを使用したポイントクエリを最適化し、大規模シナリオでスループットを 30% 以上向上させています。この強化を活用するには、Hologres インスタンスを V1.1.49 以降にアップグレードしてください。固定プランの詳細については、「固定プランによる SQL 実行の高速化」をご参照ください。
V1.1 デフォルト動作の変更(2022年3月)
子パーティションテーブルのアタッチ時のプロパティ検証
Hologres V1.1.42 以降、親テーブルに子パーティションテーブルをアタッチする場合、Hologres はプライマリキー(PK)、インデックス、NOT NULL 制約などのプロパティをより厳密に検証するようになりました。子パーティションテーブルのプロパティが親テーブルと不一致の場合、ATTACH 操作は失敗し、エラーが返されます。子パーティションテーブルを作成する前に、そのプロパティが親テーブルと一致していることを確認してください。親テーブルおよび子パーティションテーブルの制約の詳細については、「CREATE PARTITION TABLE」をご参照ください。
以下の例では、子パーティションテーブルのクラスタリングキーが親テーブルと不一致であるため、ATTACH 操作が失敗します。
-- 親テーブルおよび子パーティションテーブルを作成します。
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 inconsistent with parent.
Hint: create partition with [create table ... partition of ...] to be consistent with parent.
V1.1 のデフォルトの動作の変更(2021年12月)
新規インスタンスのパブリックエンドポイントがデフォルトで無効化
データセキュリティを強化するため、2021 年 12 月 7 日以降、新規 Hologres インスタンスのパブリックエンドポイントはデフォルトで無効化されています。パブリックエンドポイントを使用する必要がある場合は、Hologres コンソール で有効化できます。
Hologres V1.1 のデフォルト動作の変更点(2021 年 11 月)
削除:ノードあたり 20 GB のコンピューティングメモリ制限
Hologres V1.1.24 では、ワーカーノードのノードあたり 20 GB のランタイムメモリ制限が削除されました。代わりに、システムがノードメモリを動的に調整します。システムは、各ワーカーノードの現在のメモリ使用量を定期的にチェックし、コンピューティング用の上限メモリ制限を動的に割り当てます。このアプローチにより、利用可能なランタイムメモリが最大化され、各クエリが十分なメモリ割り当てを受けることが保証されます。Hologres V1.1.24 以降にアップグレードした後でも、有効な実行計画を持つクエリで依然としてメモリ不足エラーが発生する場合、インスタンスがメモリ制限に達していることを意味します。この場合、SQL ステートメントを最適化するか、インスタンスをスケールアップする必要があります。
Hologres インスタンスのバックエンドは、複数のノードで構成されています。ノード数はインスタンス仕様によって異なります。各ノードには 64 GB のメモリがあり、コンピューティングランタイム、キャッシュ、およびメタデータおよび常駐プロセスに均等に分割されます。
Hologres V1.1 のデフォルト動作の変更点(2021 年 10 月)
-
Auto-analyze がデフォルトで有効化
Hologres V0.10 で導入された Auto-analyze 機能は、多数のユーザーによる検証を経て、本番環境で使用可能な状態と判断されました。Hologres V1.1 以降、この機能は新規インスタンスに対してデフォルトで有効化されます。アップグレード済みのインスタンスには影響しません。関連するパラメーター名も以下のように更新されています。
元のパラメーター
新しいパラメーター
デフォルト
hg_experimental_enable_start_auto_analyze_worker
hg_enable_start_auto_analyze_worker
on
Auto-analyze 機能の詳細については、「ANALYZE および AUTO 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')
-
リシャーディング機能の詳細については、「テーブルグループおよびシャードの管理」をご参照ください。
-
テーブルグループの詳細については、「テーブルグループ設定のベストプラクティス」をご参照ください。
-
-
MaxCompute 外部テーブルへのアクセス動作の変更点
Hologres V0.10 では、MaxCompute 外部テーブル向けの新しい高速クエリエンジンが導入され、30% 以上のパフォーマンス向上が実現しました。多数の検証を経て、本番環境で使用可能な状態と判断されたため、この新しいエンジンは 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
デフォルト値は、インスタンスのコア数に合わせて調整され、最大 128 です。
なし
hg_foreign_table_executor_dml_max_dop
このパラメーターは V1.1 で新規追加されました。デフォルト値は 32 です。外部テーブルを含む DML SQL ステートメントに適用されます。
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
なし
V1.1 では、MaxCompute への書き込みがデフォルトで有効化されました。詳細については、「MaxCompute へのデータエクスポート」をご参照ください。
これらのパラメーターの詳細については、「MaxCompute 外部テーブルのパフォーマンスチューニング」をご参照ください。
-
pg_stat_activity テーブルがグローバルステータスを提供
以前は、pg_stat_activity テーブルは単一フロントエンドノード上のアクティブ接続のステータスのみを表示していたため、アクティブクエリの管理が困難でした。V1.1 では、このテーブルがすべてのフロントエンドノードからのステータスを集約するようになりました。アクティブクエリの管理については、「クエリの管理」をご参照ください。
-
デフォルト接続動作の変更点
Hologres V1.1 では、スーパーユーザーの予約接続数を増加させ、HoloWeb 接続プールのロジックを改良することで、接続数上限に達した場合でも、HoloWeb を使用してインスタンスに接続および管理できるように接続処理を改善しました。接続の管理については、「接続の管理」をご参照ください。
-
idle_in_transaction_session_timeout のデフォルト値の変更点
idle_in_transaction_session_timeoutパラメーターは、アイドル状態に入ったトランザクションのタイムアウト動作を指定します。このパラメーターの値を設定しない場合、デフォルトではタイムアウト時にトランザクションが解放されず、クエリがブロックされる可能性があります。Hologres V1.1 では、idle_in_transaction_session_timeoutの値がデフォルトで 10 分に設定されました。このパラメーターの使用方法については、「クエリの管理」をご参照ください。