4

500 万行を超えるテーブルに対してクエリを実行していますが、このクエリの実行には約 30 分かかります。明らかな理由から、これは受け入れられません。クエリを書き直して、10 秒未満で実行できるようにしました。しかし、私の根本的な問題は、クエリが約 12.5% の CPU しか使用しておらず、サーバーのリソースをすべて使用していないように見えることです。サーバーには 8 つのコアがあり、クエリ 100%/8 コア = コアあたり 12.5% の CPU を実行すると、1 つしか使用していないように見えます。それが重要な場合、データベースは MyISAM エンジンを使用します。

ほとんどの状況では、サーバーが 1 つのクエリで行き詰まることを望まないことを理解していますが、この場合は許容されます (クエリは、現実の世界からアクセスできないテスト サーバーで実行されているため、トラフィックやその他の実行中のサービスは問題ない)。

簡単に言えば、単一のクエリに複数の CPU へのアクセスを許可することは可能ですか、それとも MySQL アーキテクチャのために単一のクエリを (CPU レベルで) スレッド化することは不可能ですか? クエリが 12.5 CPU のみを使用し、MySQL がクエリごとに複数のコアを使用できるのは単なる偶然であるという 3 番目のオプションもあると思います。

4

1 に答える 1

4

「現在、1 つの SQL ステートメントが同じ物理スレッドで最初から最後まで実行されています。」

http://lists.mysql.com/internals/37329

于 2012-11-09T13:30:55.967 に答える