クエリがハングする
次の理由で、クエリがハングしたり、応答を停止したりすることがあります。以下のトラブルシューティングアプローチをお勧めします。
データベースへの接続が中断された
最大送信単位 (MTU) のサイズを小さくします。MTU サイズにより、ネットワーク接続を介して 1 つのイーサネットフレームで転送できるパケットの最大サイズ (バイト単位) が決まります。詳細については、「Amazon Redshift 管理ガイド」の「The connection to the database is dropped」(データベースへの接続が中断する) を参照してください
データベースへの接続がタイムアウトした
COPY コマンドなどの長いクエリを実行すると、データベースへのクライアント接続がハングまたはタイムアウトしているように見えます。この場合、Amazon Redshift コンソールにはクエリが完了したと表示されますが、クライアントツール自体はまだクエリを実行しているように見えることがあります。接続がいつ停止したかに応じて、クエリの結果がないか、不完全になる可能性があります。この効果は、中間ネットワークコンポーネントによってアイドル接続が終了すると発生します。詳細については、「Amazon Redshift 管理ガイド」の「Firewall Timeout Issue」(ファイアウォールのタイムアウト問題) を参照してください。
ODBC 使用時にクライアント側のメモリ不足エラーが発生する
クライアントアプリケーションが ODBC 接続を使用し、クエリで作成される結果セットが大きすぎてメモリが足りなくなる場合、カーソルを使用して、結果セットをクライアントアプリケーションに渡すことができます。詳細については、「DECLARE」および「カーソルを使用するときのパフォーマンスに関する考慮事項」を参照してください。
JDBC 使用時にクライアント側のメモリ不足エラーが発生する
JDBC 接続で大規模な結果セットを取得しようとすると、クライアント側のメモリ不足エラーが発生する可能性があります。詳細については、「JDBC フェッチサイズパラメータの設定」を参照してください。
デッドロックがある可能性がある
デッドロックがあると考えられる場合は、以下を試してください。
-
STV_LOCKS および STL_TR_CONFLICT システムテーブルで複数のテーブルの更新に起因する競合を見つけます。
-
PG_CANCEL_BACKEND 関数を使用して、1 つ以上の競合しているクエリをキャンセルします。
-
PG_TERMINATE_BACKEND 関数を使用して、セッションを終了します。これにより、終了したセッションで現在実行されているトランザクションがすべてのロックを解除し、トランザクションがロールバックされます。
-
同時書き込み操作のスケジュールを慎重に設定します。詳細については、「同時書き込み操作を管理する」を参照してください。