データベース ユーザーがよく誤解するのは、CPU の使用率が高いことは良くないということです。
そうではありません。
データベースの速度は 1 つだけです: 可能な限り高速です。管理者が設定した制限内で、クエリをすばやく実行するために、常にすべてのリソースを使い果たします。
ほとんどのクエリは、他のリソースよりも多くの特定のリソースを必要とします。大規模なデータベースでのほとんどのクエリでは、そのリソースはディスク I/O であるため、データベースは可能な限り高速にストレージをスラッシングします。ハードドライブを待っている間、通常は他の作業を行うことができないため、スレッド/プロセスはスリープ状態になり、CPU の使用を停止します。
小規模なデータベース、または大規模なデータベース内の小規模なデータセットに対するクエリは、多くの場合、完全に RAM に収まります。オペレーティング システムはディスクからデータをキャッシュし、RAM に保存して、データベースから要求されたときにいつでも返せるようにします。これは、データベースがディスクを待機せず、強制的にスリープ状態にならないことを意味します。そのため、CPU を使用してデータを全面的に処理し、回答を迅速に取得します。
CPU の使用を気にする理由は 2 つあります。
- 十分な CPU 時間を取得していないそのマシンで別の何かを実行しています。また
- 100% の CPU 使用率を考えると、データベースから十分なパフォーマンスが得られないと考えています。
最初の点については、データベースのせいにしないでください。管理者の問題です。適切なレベルなどのオペレーティング システム スケジューラ コントロールを設定して、ワークロードの優先順位を再設定するか、遅れることなく必要なすべての作業を実行できるより大きなサーバーを取得します。
2 番目の点については、データベースのチューニングやクエリなどを確認する必要があります。これは「データベースが 100% の CPU を使用している」問題ではなく、「十分なスループットが得られず、CPU バウンドのように見える」問題です。 . データベースとクエリのチューニングは大きなトピックであり、特に私は通常 MySQL を使用しないため、ここでは取り上げません。