クエリの性能が突然低下した場合の対処方法

Posted June 18, 2018 by Soniya Shah, Information Developer

Modern Database Analytics
以前は高速で実行されていたクエリの実行が遅くなり始めましたか?
次のチェックリストを使用し、以前は高速に実行されていたクエリの性能が突然低下した原因を調べます。

ステップ タスク 結果
1 次のコマンドを使用して、ホストのエラーメッセージを確認します。 $ cat /var/log/messages$ dmesg クラスターの状態が良好な場合、Step 2 へ。

クラスターの状態が良好でなく、エラーメッセージが表示された場合は、システム管理者に連絡してください。 サーバー上の問題が解決したら、このチェックリストの次に進みます。
2 次のコマンドを使用して、全ノードのクラスター設定を確認します。 $ /opt/vertica/oss/python/bin/python -m vertica.local_verify クラスターが正しく設定されていない場合、Verticaのドキュメントへのリンクを含むエラーのリストを表示します。リンク先の内容を確認し、エラーを解決してください。

エラーが表示されない場合、Step 3 へ。
3 クラスターの状態を確認する前にデータベースを停止します。 $ /opt/vertica/bin/admintools -t stop_db -d db-name データベースが正常に停止した場合、Step 4 へ。

それ以外の場合、検証スクリプトを実行し、Step 4 へ。
4 クラスターのネットワーク性能を確認します。 $ /opt/vertica/bin/vnetperf ディスクI/Oの性能を確認します。 $ /opt/vertica/bin/vioperf CPUの性能を確認します。 $ /opt/vertica/bin/vcpuperf ネットワーク、ディスクI/O、およびCPUのパフォーマンスの結果を調べ、Step 5 へ。
5 EXPLAINステートメント、あるいは、EXPLAIN LOCAL VERBOSEステートメントを実行し、出力結果を確認し、異常である可能性がある点を特定します。=> EXPLAIN <query> => EXPLAIN LOCAL VERBOSE <query> 統計情報が不足しているというメッセージが表示された場合、Step 6 へ。
期待される結合順序で表示されない場合、Step 7 へ。

現在のプランと古いプランを比較することで、実行計画の変更を確認できます。新しいプランが以前より悪くなっている場合、Verticaテクニカルサポートまでお問い合わせください。古いプランが確認できない、あるいは、異常が見られない場合、Step 8 へ。
6 次のコマンドを使用して、EXPLAINで確認した実行計画の内容から、統計情報が欠落していると判別したテーブルに対して、統計情報を更新します。 => SELECT ANALYZE_STATISTICS(‘<table_schema>.<table_name>’); 統計取得が完了したら、Step 5を繰り返し、計画が変更されているか、あるいは、異常がある可能性がある別の点が発生していないかどうかを確認します。 詳細情報については、Verticaドキュメントの ANALYZE STATISTICS を参照ください。
7 新しい結合順序がより効率的である場合、Verticaはクエリを分析してクエリの結合順序を変更します。 クエリの結合順序が変更されている場合、SYNTACTIC_JOINヒントを使用して結合順序を強制できます。ヒントは結合順序を強制し、他の結合のヒントを有効にします。 => SELECT /*+SYNTACTIC_JOIN*/ クエリオプティマイザーのヒントを使用して、クエリのパフォーマンスを向上させる必要がある場合、Verticaテクニカルサポートにお問い合わせいただき、以前より悪くなっている点について報告してください。
8 リアルタイムでプロファイリングすることにより、実行中の長時間実行クエリをモニターすることができます。 クエリ性能の劣化原因を特定するために、クエリをプロファイルしてください。クエリ実行のプロファイリングについてのより詳細な情報については、Vertica Knowledge Baseの System Tables for Analyzing Query Performance を参照してください。 クエリの性能が向上した場合、このチェックリストは完了です。

クエリの性能が向上しない場合、Verticaテクニカルサポートまでお問い合わせください。

関連詳細情報

特定のクエリの性能を向上させるためには、Vertica Knowledge Base の Troubleshooting Vertica Query Performance with-System Tables にて詳細情報が確認できます。