1

現在私はこのサーバーを持っています

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 15
model       : 2
model name  : Intel(R) Xeon(TM) CPU 2.40GHz
stepping    : 9
cpu MHz     : 2392.149
cache size  : 512 KB

私のアプリケーションでは、1秒あたり200〜300トランザクションで、MySQLのCPU使用率の96%以上が発生します。誰かが助けてくれますか、方法についてのリンクを提供してください

  • PostgreSQLのベンチマークを行う
  • PostgreSQLはMySQLの代わりにCPU使用率を改善できると思いますか
  • リンク、ベンチマーク比較を提示するだけのwiki
4

1 に答える 1

8

データベース ユーザーがよく誤解するのは、CPU の使用率が高いことは良くないということです。

そうではありません。

データベースの速度は 1 つだけです: 可能な限り高速です。管理者が設定した制限内で、クエリをすばやく実行するために、常にすべてのリソースを使い果たします。

ほとんどのクエリは、他のリソースよりも多くの特定のリソースを必要とします。大規模なデータベースでのほとんどのクエリでは、そのリソースはディスク I/O であるため、データベースは可能な限り高速にストレージをスラッシングします。ハードドライブを待っている間、通常は他の作業を行うことができないため、スレッド/プロセスはスリープ状態になり、CPU の使用を停止します。

小規模なデータベース、または大規模なデータベース内の小規模なデータセットに対するクエリは、多くの場合、完全に RAM に収まります。オペレーティング システムはディスクからデータをキャッシュし、RAM に保存して、データベースから要求されたときにいつでも返せるようにします。これは、データベースがディスクを待機せず、強制的にスリープ状態にならないことを意味します。そのため、CPU を使用してデータを全面的に処理し、回答を迅速に取得します。

CPU の使用を気にする理由は 2 つあります。

  • 十分な CPU 時間を取得していないそのマシンで別の何かを実行しています。また
  • 100% の CPU 使用率を考えると、データベースから十分なパフォーマンスが得られないと考えています。

最初の点については、データベースのせいにしないでください。管理者の問題です。適切なレベルなどのオペレーティング システム スケジューラ コントロールを設定して、ワークロードの優先順位を再設定するか、遅れることなく必要なすべての作業を実行できるより大きなサーバーを取得します。

2 番目の点については、データベースのチューニングやクエリなどを確認する必要があります。これは「データベースが 100% の CPU を使用している」問題ではなく、「十分なスループットが得られず、CPU バウンドのように見える」問題です。 . データベースとクエリのチューニングは大きなトピックであり、特に私は通常 MySQL を使用しないため、ここでは取り上げません。

于 2012-06-28T03:51:42.663 に答える