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

Hologres:SQL 診断

最終更新日:Feb 04, 2026

Hologres はスロークエリログを提供しており、デフォルトでは実行に 100 ミリ秒以上かかる DML 文と、すべての DDL 文が記録されます。Hologres はこのログデータを利用して SQL 診断機能を提供します。この機能により、さまざまなディメンションからトレンドや詳細を分析し、インスタンスの使用状況を把握してパフォーマンス向上のための最適化を行うことができます。本トピックでは、SQL 診断の使用方法について説明します。

機能と推奨事項

SQL 診断は、以下の項目をサポートしています。

診断項目

説明

合計クエリ数

選択した時間範囲内の合計クエリ数です。

成功したクエリ

選択した時間範囲内に成功したクエリの合計数です。

失敗したクエリ

選択した時間範囲内に失敗したクエリの合計数です。

失敗したクエリの詳細

エラーコードとそれに対応する失敗回数を表示し、問題のあるクエリのトラブルシューティングに役立ちます。また、代表的なクエリと詳細なエラー情報も表示します。

詳細については Query Insight にアクセスするか、「エラーコードリファレンス」を参照して具体的な原因を特定し、インスタンスの安定性を向上させることができます。

クエリの成功/失敗トレンド

選択した時間範囲における成功したクエリと失敗したクエリの比率を表示し、全体的なクエリパフォーマンスの評価に役立ちます。

クエリ実行時間の分布トレンド

選択した時間範囲におけるクエリ実行時間の分布トレンドを表示します。

デフォルトでは、SELECTINSERTUPDATEDELETE クエリのみが分析されます。

DML トレンド

DML クエリの実行トレンドを表示します。

デフォルトでは、SELECTINSERTUPDATEDELETE クエリのみが分析されます。

DDL トレンド

DDL クエリの実行トレンドを表示します。

以下の DDL 文のみが含まれます:CREATE TABLEDROP TABLETRUNCATE TABLEALTER TABLECALLCREATE EXTENSIONCREATE FOREIGN TABLEALTER FOREIGN TABLEIMPORT FOREIGN SCHEMADROP FOREIGN TABLECREATE SCHEMACREATE VIEWDROP VIEWGRANTCREATE ROLEALTER ROLECOMMENT

クエリソースアプリケーションの分布またはトレンド

application_name ディメンションによるクエリの分布またはトレンドを表示します。

最も多くのクエリを生成しているアプリケーションを分析します。異なるタスクタイプに別々の application_name 値を割り当てることで、ソース分布チャートの可視性を向上させ、異常を検出しやすくします。

ユーザーベースのクエリ分布またはトレンド

usename ディメンションによるクエリの分布またはトレンドを表示します。

ユーザーのクエリ動作を明確に分析します。1 つのアカウントを共有するのではなく、異なるタスクに別々のユーザー名を使用することで、異常検出を簡素化します。

実行エンジンのクエリトレンド

選択した時間範囲における実行エンジン別のクエリ実行トレンドを表示します。

Hologres は、HQE、PQE、SDK、FixedQE など、クエリの特性に基づいて異なる実行エンジンを使用します。詳細については、「サービスアーキテクチャ」をご参照ください。可能な限り PQE クエリを避け、HQE クエリに書き換えることで、パフォーマンスを向上させることができます。

注意事項

  • SQL 診断では、以下のフィルターを使用してシステム関連の SQL 文が除外されます。

    WHERE
    usename != 'system'
    AND client_addr != '127.0.0.1' 
    AND (application_name IS NULL 
    OR application_name NOT IN ('AutoPartition', 'holoweb_system', 'HgGenInQuery'))
  • デフォルトでは、hologres.hg_query_log テーブルは実行に 1 秒以上かかる DML 文とすべての DDL 文のみをキャプチャします。SQL 診断は、実行に 100 ミリ秒以上かかるすべての DML 文と DDL 文を分析します。hologres.hg_query_log テーブルのクエリ数が SQL 診断よりも少ない場合、これはテーブルに 1 秒を超えるクエリのみが含まれているためです。log_min_duration_statement パラメーターを調整して、実行に 100 ミリ秒以上かかるクエリをキャプチャできます。詳細については、「スロークエリログの表示と分析」をご参照ください。

  • スロークエリログと同様に、SQL 診断は過去 1 か月分のデータのみを保持します。

  • データは T+1 ベースで更新されます。過去 1 か月以内の T-1 (前日) 以前のデータをクエリできます。デフォルトでは、前日のデータが表示されます。必要に応じて時間範囲を調整できます。

  • SQL 診断は、スロークエリログと同じ権限を使用します。権限の付与方法の詳細については、「表示権限の付与」をご参照ください。

操作手順

HoloWeb を使用して SQL 診断を表示できます。

  1. HoloWeb コンソールにログインします。詳細については、「HoloWeb への接続とクエリの実行」をご参照ください。

  2. 上部のナビゲーションバーで、[診断と最適化] をクリックします。

  3. 左側のナビゲーションウィンドウで、Instance Diagnosis > [SQL 診断] を選択します。

  4. [SQL 診断] ページの上部で、クエリ条件を設定します。

    クエリパラメーター:

    パラメーター

    必須

    説明

    インスタンス名

    はい

    スロークエリを照会するインスタンスの名前。デフォルトは現在ログインしているインスタンスです。

    時間範囲

    はい

    スロークエリの時間範囲。デフォルトは Previous Day です。最大 1 か月分の履歴データを選択できます。

  5. Submit をクリックして結果を表示します。

インテリジェント SQL エラー診断

クエリが失敗すると、HoloWebSQL Editor[SQL 診断] 情報が表示されます。さらに、Query Insight はインテリジェントな診断を提供し、失敗の原因とソリューションを自動的に SQL Editor に返します。この機能により、失敗したクエリをより効率的に解決できます。

エラーコードリファレンス

エラーコード

説明

一般的な完全なエラーメッセージ

ソリューション

HG_ERRCODE_FDW_ERROR

このエラーは、MaxCompute の外部テーブルのメタデータを Hologres にインポートするときに発生します。通常、サポートされていないテーブルタイプが原因で発生します。

failed to import foreign schema from odps: Can't find file system factory

詳細については、「HG_ERRCODE_FDW_ERROR」をご参照ください。

ERRCODE_FDW_ERROR

このエラーは、外部テーブルのクエリ中に発生します。

  • failed to import foreign schema from odps: Authorization Failed: xxx

  • failed to import foreign schema from odps:Table not found -xxx

特定のエラーメッセージに基づいて問題を解決します。詳細については、「ERRCODE_FDW_ERROR」をご参照ください。

  • ERRCODE_UNIQUE_VIOLATION

  • pk violates

このエラーは、一意性制約の違反を示します。通常、重複するプライマリキーの値を挿入するときに発生します。

duplicate key value violates unique constraint DETAIL: xxx already exists.

  • 重複するプライマリキーデータを処理します。

  • INSERT 文でエラーが発生した場合は、INSERT INTO xx ON CONFLICT 構文を使用して書き換えることで、プライマリキーによるデータの重複排除ができます。詳細については、「INSERT ON CONFLICT (UPSERT)」をご参照ください。

  • INSERT INTO xx ON CONFLICT 構文を使用しているときにエラーが発生した場合、ソースデータが重複しています。ソリューションの詳細については、「INSERT ON CONFLICT (UPSERT)」をご参照ください。

  • ERRCODE_CHECK_VIOLATION

  • partition constraint

このエラーは、CHECK 制約の違反を示します。通常、Hologres のパーティションテーブルにデータを書き込む際に、パーティション値が定義されたパーティション分割スキームと一致しない場合に発生します。たとえば、パーティション 20240301 向けのデータをパーティション 0240229 に書き込む場合などです。

new row for relation xx violates partition constraint DETAIL: Failing row contains (column1)=(xxxx).

パーティションデータが定義されたパーティション値と一致していることを確認し、一致しないデータを修正します。

  • ERRCODE_NOT_NULL_VIOLATION

  • not-null constraint

  • UsageProblem

このエラーは、非 NULL 制約の違反を示します。通常、NULL 値を許可しないフィールドに NULL 値を挿入するときに発生します。

null value in column xxx violates not-null constraint DETAIL: Failing row contains (null).

ダーティデータをクリーンアップします。

ERRCODE_UNDEFINED_TABLE

テーブルが存在しません。このエラーは通常、テーブルが最近作成されたがメタデータが更新されていない場合、またはクエリ実行中にテーブルが切り捨てられたり削除されたりした場合に発生します。

Dispatch query failed: Table not found

Query Insight を使用して、同時実行されている TRUNCATE または DROP 操作を確認し、タスクを再試行できます。詳細については、「Query Insight」をご参照ください。

  • ERRCODE_INTERNAL_ERROR

  • ERPC_ERROR_CONNECTION_CLOSED

予期しない内部エラーが発生しました。インスタンスが故障したか、クエリが予期せず中断された可能性があります。

  • Transaction xx is not found or it was expired and cancelled.

  • Query is cancelled

  • ERPC_ERROR_CONNECTION_CLOSED

利用可能なものはありません。

  • ERRCODE_QUERY_CANCELED

  • User canceled

  • CANCELLED

  • Query Is Cancelled

  • InternalQueryIsClosed

クエリがキャンセルされました。このエラーは通常、クライアント側のタイムアウト設定、またはテーブルに対する TRUNCATE または DROP 操作によって発生します。

  • ERROR: canceling statement due to statement timeout

  • canceling statement due to user request

ソリューションの詳細については、「クエリの管理」をご参照ください。

  • ERRCODE_FEATURE_NOT_SUPPORTED

  • Unsupported Feature

この機能はサポートされていません。

  • Dynamic partition selector is not supported

  • ALTER TABLE CHANGE OWNER is not supported in SPM (Simple Permission Mode)

  • Feature not supported: insert into parent table

ソリューションの詳細については、「Hologres SQL 文の一般的な問題」をご参照ください。

ERRCODE_UNDEFINED_OBJECT

未定義のオブジェクトが存在します。このエラーは通常、列またはテーブルグループが見つからないことが原因で発生します。

  • column xxx does not exist

  • Table group xxx does not exist.

  • 見つからないオブジェクトを作成します。

  • SQL 文で参照されているオブジェクト名が正しいことを確認します。

  • ERRCODE_INSUFFICIENT_PRIVILEGE

  • permission denied

現在のアカウントには必要な権限がありません。アカウントに必要な権限を付与する必要があります。

  • ERROR: permission denied for schema xxx

  • ERROR: permission denied for foreign table table_info

ソリューションの詳細については、「Hologres の権限」をご参照ください。

  • ERRCODE_OUT_OF_MEMORY

  • OOM

Out-of-Memory (OOM) エラーのため、クエリが失敗しました。

Total memory used by all existing queries exceeded memory limitation

ソリューションの詳細については、「OOM トラブルシューティングガイド」をご参照ください。

  • ERRCODE_DATATYPE_MISMATCH

  • Unmatched Data Row Schema Number

  • Dataset Schema Not Match

データ型の不一致が発生しました。このエラーは通常、式で期待されるデータ型がフィールドの実際のデータ型と異なる場合に発生します。

  • unmatched data row schema number

  • Datasets has different schema

SQL 文の列が一致していることを確認します。

  • ERRCODE_DIVISION_BY_ZERO

  • division by zero

SQL 文に、除数が 0 の除算操作が含まれています。

division by zero

ダーティデータをクリーンアップするか、Grand Unified Configuration (GUC) パラメーターを設定してゼロ除算エラーを抑制できます。詳細については、「関数の使用法」をご参照ください。

ERRCODE_STRING_DATA_RIGHT_TRUNCATION

VARCHAR フィールドの値がテーブル作成時に指定された長さを超えると、文字列の右側切り捨てエラーが発生します。

value too long for type character varying(xx)

テーブルを再作成し、VARCHAR フィールドに大きな長さを指定するか、フィールドのデータ型を TEXT に変更します。

  • ERRCODE_PROGRAM_LIMIT_EXCEEDED

  • Exceed Odps Scan Limit

クエリが Hologres によって課せられた制限を超えています。このエラーは通常、外部テーブルからスキャンされるパーティション、行、またはバイト数が多すぎる場合に発生します。

  • number of read rows (xxxxx) exceeds limit (xxxxxxx)

  • number of partitions (xxx) scanned for "xxxx" exceeds the maximum allowed (xxx)

  • scan (xxx GB) for "xxxxx" exceeds the maximum allowed (xxx GB)

外部テーブルクエリの制限を超えています。ソリューションの詳細については、「MaxCompute 連携:一般的な問題と診断」をご参照ください。

ERRCODE_SYNTAX_ERROR

SQL 文に構文エラーがあります。

syntax error at or near "xxxxx"

SQL 文の構文を確認してください。

ERRCODE_UNDEFINED_FUNCTION

このエラーは通常、サポートされていない関数が使用されていることを示します。エラーの原因として、関数の構文が正しくない、拡張機能が欠落している、または関数がサポートされていないなどが考えられます。

  • function xxxxx does not exist

  • operator does not exist: xxxxxx

拡張機能の欠落などのエラーを避けるために、正しい関数の構文を使用してください。詳細については、「関数リファレンス」をご参照ください。

ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED

外部テーブルに対する読み取り権限がありません。

check permission for foreign table scan failed: failed to check permission:MaxCompute error,Authorization Failed [4019], You have NO privilege 'odps:Select' on {xxxxxxxxxx}

ソリューションの詳細については、「MaxCompute の権限」をご参照ください。

  • ERRCODE_DUPLICATE_OBJECT

  • already exist

重複したオブジェクトが存在します。このエラーは通常、重複した拡張機能、パブリケーション、またはロールを作成しようとしたときに発生します。

  • publication "xxxxx" already exists

  • extension "xxxxx" already exists

  • role "xxxxxxxx" already exists

オブジェクトが既に存在する場合は、再度作成しないでください。

  • ERRCODE_INVALID_TEXT_REPRESENTATION

  • invalid input

無効なテキスト表現が使用されています。このエラーは通常、空の文字列 ("") を INT に変換するなど、無効なデータを含む文字列を他のデータ型に変換するときに発生します。

invalid input syntax for integer: xxx

ダーティデータをクリーンアップします。

ERRCODE_BAD_COPY_FILE_FORMAT

COPY コマンドの実行中にファイルまたはデータ形式が正しくありません。このエラーは、データに COPY コマンドで指定されたデリミタ (スペースなど) が含まれていることが原因で発生することが多く、列数の不一致を引き起こします。

  • extra data after last expected column. failed to query next

  • missing data for column "xxx". failed to query next

ダーティデータをクリーンアップします。

ERRCODE_UNDEFINED_COLUMN

クエリが存在しない列を参照しています。

column xxxxx does not exist

SQL 文の構文を確認してください。

ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE

数値が有効範囲外です:

  • 数値データが数値型に定義された範囲を超えています。たとえば、decimal(4,2) または numeric(4,2) 型の場合、整数部分は最大 2 桁ですが、実際のデータは 100 です。

  • INT または BIGINT の値が有効範囲を超えています。

  • value "xxxxx" is out of range for type bigint

  • numeric field overflow

  • bigint out of range

  • integer out of range

ダーティデータまたは不正な型定義を確認し、列の型を調整します。

ERRCODE_DATETIME_FIELD_OVERFLOW

timestamp、timestamptz、date、time、timetz などの時間関連フィールドに、範囲外の値が含まれています。たとえば、timestamptz 列に "877411-01-01 00:00:00+08" を書き込む場合などです。

  • date/time field value out of range: "xxxxxx"

  • date out of range: "xxxxxx"

ダーティデータをクリーンアップします。

ERRCODE_INVALID_PARAMETER_VALUE

パラメーター値が無効です。このエラーは通常、パラメーターが要件を満たしていない場合に発生します。特定のエラーメッセージに基づいて問題を解決できます。たとえば、エラーメッセージ column "col" with type "float4" cannot be set as "bitmap_columns" は、float4 型をビットマップ列に使用できないことを示します。

  • mismatched properties: table orientation is "column" but storage format is "sst"

  • resharding insert select table data failed : Dispatch query failed: internal error: Failed to get available shards for query

  • InsertOverwrite insert select table data failed : column a.unsign_type does not exist

SQL 文の構文を確認してください。

ERRCODE_INVALID_DATETIME_FORMAT

日付形式が無効です。日付データが SELECT TO_DATE('aa', 'YYYY-MM-DD'); のように必要な形式に準拠していません。データを確認してください。

  • invalid input syntax for type timestamp: ""

  • invalid input syntax for type date: ""

  • invalid value "" for "yyyy",Value must be an integer.

ダーティデータをクリーンアップします。

ERRCODE_CHARACTER_NOT_IN_REPERTOIRE

文字がエンコーディング範囲外です。このエラーは通常、無効な文字が UTF-8 エンコーディング範囲外である場合に発生します。

invalid byte sequence for encoding "UTF8": 0xe9 0x80

ダーティデータをクリーンアップします。

ERRCODE_DUPLICATE_TABLE

重複したテーブルが存在します。このエラーは通常、既に存在するテーブルを作成しようとしたときに発生します。

relation "xxxx" already exists

テーブルが既に存在する場合は、再度作成しないでください。

ERRCODE_UNTRANSLATABLE_CHARACTER

文字をターゲット形式に変換できません。

character with byte sequence 0xe4 0x9e 0xab in encoding "UTF8" has no equivalent in encoding "GBK"

説明

このメッセージは、UTF-8 でエンコードされた文字が、ターゲットの GBK エンコーディングに対応するものがないことを示します。

ダーティデータをクリーンアップします。

ERRCODE_GROUPING_ERROR

グループ化エラーが発生しました。このエラーは GROUP BY 句に関連しています。

column "xxx" must appear in the GROUP BY clause or be used in an aggregate function

SQL 文の構文を確認してください。集計関数で使用されるフィールドは、GROUP BY 句に含める必要があります。

  • ERRCODE_INVALID_TRANSACTION_STATE

  • Usage Problem

トランザクションが無効な状態です。トランザクション関連の操作は許可されていません。たとえば、CREATE TABLE 文が実行されたトランザクションの外で SET_TABLE_PROPERTY を呼び出して分散キーを作成する場合などです。

SET_TABLE_PROPERTY and CREATE TABLE statement are not in the same transaction

CREATE TABLE 文と CALL SET_TABLE_PROPERTY 文は、同じトランザクション内にある必要があります。BEGIN;COMMIT; を使用してトランザクションを定義できます。

ERRCODE_AMBIGUOUS_COLUMN

列参照があいまいです。このエラーは、列名が複数の列を参照できる場合に発生します。たとえば、SELECT id FROM t1 INNER JOIN t2 ON t1.id = t2.id では、id フィールドがテーブルエイリアスで修飾されていません。

column reference "xxx" is ambiguous

SQL 文の構文を確認してください。

ERRCODE_DUPLICATE_COLUMN

重複した列が存在します。このエラーは通常、テーブルを作成するときに同じフィールドを複数回宣言した場合に発生します。

column "xxx" specified more than once

SQL 文の構文を確認してください。

ERRCODE_AMBIGUOUS_FUNCTION

関数参照があいまいです。このエラーは、関数が複数の入力型をサポートしているが、渡された引数のデータ型が明示的に指定されていない場合に発生します。

たとえば、`to_char` 関数の構文は to_char(timestamp/timestamptz, text) です。

to_char 関数には、to_char(double precision, text)to_char(int, text) など、数値型に対する複数のシグネチャがあります。そのため、to_char('2024-02-22', 'YYYY-MM-DD') のような式は、最初の引数 '2024-02-22' が文字列であるためエラーになります。このエラーを解決するには、文字列を明示的にタイムスタンプ型にキャストする必要があります。例:to_char('2024-02-22'::timestamptz, 'YYYY-MM-DD')

SQL 文の構文を確認してください。

ERRCODE_INVALID_COLUMN_DEFINITION

列定義が無効です。Hologres では、このエラーは通常、Numeric または Decimal 型の精度が指定されていない場合に発生します。

invalid definition of a numeric type

ダーティデータをクリーンアップします。

ERRCODE_INVALID_CATALOG_NAME

ERRCODE_UNDEFINED_DATABASE

指定されたデータベースが存在しません。

利用可能なものはありません

データベースが存在することを確認します。

ERRCODE_CANNOT_COERCE

このエラーは、2 つの型の間でデータを変換できない場合に発生します。

cannot cast type date to integer

SQL 文の構文を確認してください。

ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST

依存オブジェクトがまだ存在します。このエラーは通常、他のオブジェクトが依存しているオブジェクトを削除するときに発生します。たとえば、テーブルを含むスキーマを削除しようとする場合などです。

利用可能なものはありません

まず依存関係を解決します。詳細については、「アカウントの削除」をご参照ください。

ERRCODE_UNDEFINED_SCHEMA or

ERRCODE_INVALID_SCHEMA_NAME

指定されたスキーマが存在しません。

schema "xxxx" does not exist

スキーマが存在することを確認します。存在しない場合は作成します。

ERRCODE_DUPLICATE_DATABASE

重複したデータベースが存在します。このエラーは、既に存在するデータベースを作成しようとしたときに発生します。

利用可能なものはありません

データベースが既に存在する場合は、再度作成しないでください。

AutoAnalyze-Failed

特定の理由により、自動分析機能が失敗しました。

  • query row count from analyze table

  • query from analyze table

自動分析の失敗は通常、バックエンドに関連しています。調査のためにチケットを送信できます。

Import Foreign Table Not Found

外部テーブルが見つかりません。

  • failed to get foregin table split:Table not found

  • Failed to get odps table:Not enable acid table

  • failed to get foregin table split:% not found

アクセスしたい外部テーブルが存在することを確認します。

Cannot Acquire Lock In Time

このエラーは通常、ロックの取得に失敗した場合に発生します。同じテーブルに対する高同時実行クエリと DROP 操作は、バックエンドノードでデッドロックを引き起こす可能性があります。これにより、そのテーブルに対するすべての操作がブロックされます。

internal error: Cannot acquire lock in time, current owners

ソリューションの詳細については、「ロックとロックのトラブルシューティング」をご参照ください。

  • OTHER

  • QueryNextFTEFailed

  • QueryNextPQEFailed

  • ForeignSplitOrSchemaConnectionClosed

  • ConnectionRefused

  • ERPC_ERROR_TIMEOUT

  • ERPC_ERROR_CONNECTION_CLOSED

予期しないエラーが発生しました。

  • kConnectError: channel is empty

  • ERPC_ERROR_CONNECTION_CLOSED

  • internal error: Connect timeout, err: std_exception: Connection refused

これは予期しないエラーです。調査のためにチケットを送信できます。