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

ApsaraDB RDS:CloudDBA を使用して、ApsaraDB for RDS MySQL インスタンスの CPU 使用率を減らすにはどうすればよいですか。

最終更新日:Nov 10, 2025

問題の説明

apsaradb RDS for MySQLを使用すると、CPU使用率が高いため、応答の遅さ、接続障害、エラーなどのシステム例外が頻繁に発生することがあります。

原因

CPU使用率が高すぎるシナリオでは、95% 以上の問題が異常なSQL文によって発生します。 送信されたSQL文が十分に最適化されていない場合、次のようにデータベースのパフォーマンスに影響します。 さらに、行ロックの競合、行ロックの待機、またはバックグラウンドタスクが多数発生すると、インスタンスのCPU使用率が高くなりすぎる可能性がありますが、この記事では説明しません。

  • データベースは多数の論理読み取りを生成するため、CPUの使用率が高くなります。
  • データベースへの物理的な読み取りの数が多くなり、IOPSとI/Oの待ち時間が長くなります。
説明

説明: 論理読み取りと物理読み取りの詳細については、「詳細」をご参照ください。

解決策

説明

以下の点にご注意ください。

  • インスタンス設定やデータの変更など、リスクを引き起こす可能性のある操作を実行する前に、データのセキュリティを確保するために、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認することを推奨します。
  • ECS (Elastic Compute Service) およびRDS (Relational Database Service) インスタンスを含むインスタンスの設定およびデータを変更できます。 変更前に、スナップショットを作成するか、RDSログバックアップを有効にすることを推奨します。
  • Alibaba Cloud管理コンソールでログインアカウントやパスワードなどの機密情報を承認または送信した場合は、そのような情報をタイムリーに変更することを推奨します。

このトピックでは、CloudDBAを使用して低速および異常なSQL文を見つける方法について説明します。 その後、CloudDBAの提案を使用して、これらのSQLステートメントを最適化し、インスタンスのCPU使用量を削減し、システム効率を向上させることができます。

SQL診断を使用した異常なSQL文のトラブルシューティング

  1. RDSコンソールにログインします。 ターゲットインスタンスのリージョンを選択します。
  2. インスタンスのIDをクリックして、基本情報ページに移動します。
  3. 左側のナビゲーションウィンドウで、[低速SQLクエリ] を選択します。 遅いSQLページが表示されます。
  4. クエリする時間を選択し、[確認] をクリックします。
    説明

    説明: 現在、先月の低速SQLデータのみがサポートされています。

  5. インスタンスに低速SQLがある場合、アイコンには、生成された低速SQLの時点と数が表示されます。 図の時刻をクリックします。
  6. スローSQL文を分析する方法。 スローログの詳細で応答行とスキャンされた行の値に注目します。 各SQL文は多くの行をスキャンしますが、返される行の数は0です。 これは、多数の論理的および物理的読み出しが生成されることを示す。 メモリサイズに制限があり、すべてのデータをキャッシュできないため、物理読み取りが生成されます。 多数のデータ要求が存在する場合、多数の物理I/O要求が生成されることになる。 大量のロジック読み取りは、大量のCPUリソースを消費し、CPU使用率が高くなります。
  7. SQL文をクリックして、SQL文の詳細を表示します。
  8. [SQL最適化] をクリックして、SQL文に対するCloudDBAの最適化の提案を表示します。 次の分析では、SQL文でインデックスが欠落しているため、テーブル全体のスキャンが発生します。 さらに、MySQLのデータ更新メカニズムによれば、ステートメントが実行されるたびにテーブル全体がロックされるため、問題はさらに深刻になります。 このステートメントを実行するすべてのセッションはキューに入れられて待機し、1回の実行コストは非常に高いため、CPU使用率が高くなったり、100% に達したりするのは簡単です。
  9. 最適化の提案に基づいて、異常なSQL文を最適化します。 高いCPU使用率の問題はそれに応じて解決されます。

SQL統計を使用したSQL文のトラブルシューティング

SQL統計機能を使用してSQL例外をトラブルシューティングする方法の詳細については、「usage」をご参照ください。

説明

注意SQL監査は別途課金する必要があります。 コストを節約するために、データベースのSQLステートメントを表示する前にSQL監査を有効にし、トラブルシューティングが完了した後にこの機能をオフにできます。

詳細情報

データベース内のデータはブロック単位で測定されます。 1つのMySQLブロックは8kBであり、1つの論理読み取りまたは物理読み取りは1つのデータブロックに対応します。 データベースがビジネスクエリステートメント (データ変更操作を含む) を実行すると、CPUはまずメモリからデータブロックを要求する。 対応するデータがメモリに存在する場合、CPUはコンピューティングタスクの実行後に結果を返します。 メモリ内にデータが見つからない場合、システムは読み出し動作をトリガする。 2つのデータ取得プロセスは、それぞれ論理読み出しおよび物理読み出しである。

適用範囲

  • ApsaraDB for RDS