概要
このトピックでは、apsaradb RDS for MySQLで長期間実行されるクエリ文の原因、影響、および解決策について説明します。
背景情報
説明
以下の点にご注意ください。
- インスタンス設定やデータの変更など、リスクのある操作を実行する場合は、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認して、データのセキュリティを確保します。
- ECSおよびRDSインスタンスを含むがこれらに限定されないインスタンスの設定およびデータを変更する前に、スナップショットを作成するか、RDSログバックアップを有効にすることを推奨します。
- Alibaba Cloud管理コンソールでログオンアカウントやパスワードなどのセキュリティ情報を承認または送信した場合は、そのような情報をタイムリーに変更することを推奨します。
次のセクションでは、apsaradb RDS for MySQLを使用して長時間クエリを管理する方法について説明します。
原因
RDS MySQLの使用中に、SQLインジェクション、SQL実行効率の低下、DDLステートメントによるロック待機などの理由により、実行時間の長いクエリが発生することがあります。
説明
メタデータロックを待機する方法の詳細については、「手順」をご参照ください。「メタデータロックによってデータベース操作が失敗する問題を解決する」をご参照ください。
- 非効率的なSQL文による時間のかかるクエリ
- SQLインジェクションのために長時間続くクエリ。
- DDL文によるテーブルメタデータロック待機。
長時間クエリによる問題
一般的に言えば、BIまたはレポートクエリでない限り、長期間にわたるクエリはアプリケーションにとって無意味であり、システムリソースを消費します。 たとえば、多くの長期クエリは、過剰なCPU、IOPS、および接続などの問題を引き起こし、システムの不安定性をもたらす可能性があります。
長時間のクエリ実行を回避する方法
長いクエリ実行を回避するには、次の例を参照してください。
- アプリケーションへのSQLインジェクションに対する保護対策を講じる必要があります。
- 新しい機能モジュールをリリースする前にストレステストを実行して、実行効率の悪いSQL文の負荷を回避します。
- インデックスの作成と削除、テーブルスキーマの変更、オフピーク時のテーブルの維持をお試しください。
長時間実行されるクエリの処理方法
「メタデータロックによってデータベース操作が失敗する問題を解決します」をご参照ください。
適用範囲
- ApsaraDB RDS for MySQL