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

Hologres:SQL 診断

最終更新日:Mar 03, 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 ROLE、および COMMENT

アプリケーションソース別のクエリ比率/傾向

application_name 別のクエリ比率または傾向を表示します。

比率が高いアプリケーションを分析できます。異なるタスクタイプには関連する application_name を設定することを推奨します。これにより、より正確なアプリケーションソースの比率と傾向のチャートが提供され、異常なタスクの監視に役立ちます。

ユーザー別のクエリ比率/傾向

usename ごとにクエリの比率またはトレンドを表示します。

これにより、ユーザーのクエリ実行をより明確に分析できます。単一のアカウントではなく、異なるタスクに異なるユーザー名を使用することを推奨します。この習慣により、問題のトラブルシューティングが容易になります。

実行エンジン別のクエリ傾向

選択した時間範囲内での異なる実行エンジンに対するクエリ実行傾向を表示します。

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 診断よりも少ない場合、これは通常、hologres.hg_query_log テーブルが実行時間が 1 秒 を超えるクエリのみを記録するためです。クエリの収集対象を実行時間が 100 ミリ秒 を超えるものに変更するには、log_min_duration_statement パラメーターを変更できます。詳細については、「スロークエリログの表示と分析」をご参照ください。

  • スロークエリログと同様に、SQL 診断データは過去 1 か月分のみ利用可能です。

  • データは T+1 ベースで更新されます。前日 (T-1) およびそれ以前の 1 か月間のデータをクエリできます。デフォルトでは、前日のデータが表示されます。必要に応じて時間でデータをフィルタリングできます。

  • SQL 診断データをクエリするために必要な権限は、スロークエリログと同じです。表示権限を付与するには、「表示権限の付与」をご参照ください。

操作手順

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

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

  2. 上部のナビゲーションバーで、Diagnostics and Optimization をクリックします。

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

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

    クエリパラメーター:

    パラメーター

    必須

    説明

    インスタンス名

    はい

    スロークエリをクエリしたいインスタンスの名前。デフォルトでは現在のインスタンスが使用されます。

    時間範囲

    はい

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

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

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

失敗したクエリに対して、HoloWebSQL Editor[SQL 診断] からの情報を表示します。Query Insight 機能は、インテリジェント SQL 診断をサポートし、失敗の原因と推奨されるソリューションを自動的に 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 ... ON CONFLICT 文に書き換えて重複したプライマリキーを削除できます。詳細については、「INSERT ON CONFLICT (UPSERT)」をご参照ください。

  • INSERT ... ON CONFLICT 文が失敗した場合、データソースに重複データが含まれていることが原因です。解決策については、「INSERT ON CONFLICT (UPSERT)」をご参照ください。

  • ERRCODE_CHECK_VIOLATION

  • partition constraint

チェック制約に違反しました。このエラーは、Hologres パーティションテーブルにデータを書き込む際に、パーティション値が定義されたパーティションと一致しない場合によく発生します。たとえば、20240229 パーティションのデータが 20240301 パーティションに書き込まれる場合などです。

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

クエリがキャンセルされました。このエラーは通常、クライアントのタイムアウト、またはテーブルが切り捨てられたり削除されたりしたことが原因で発生します。

  • 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

メモリ不足のため、クエリがメモリ不足 (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

ダーティデータをクレンジングするか、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

無効なトランザクション状態が発生しました。トランザクションに関連する操作が無効です。たとえば、CALL 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

あいまいな列参照が行われました。このエラーは通常、SQL 文内の同じ列名が異なる列を参照できる場合に発生します。たとえば、文 SELECT id FROM t1 INNER JOIN t2 ON t1.id = t2.id では、id フィールドが t1 または t2 のどちらに属するかが指定されていません。

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(double precision, text)、または to_char(int, text) のような形式があります。入力が to_char('2024-02-22', 'YYYY-MM-DD') の場合、'2024-02-22' が 3 つの必須データ型のいずれでもないため、エラーが発生します。操作を成功させるには、型を明示的にキャストする必要があります: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

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

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

これは予期しないエラーです。問題をトラブルシューティングするためにチケットを送信できます。