0

MYSQL でストアド プロシージャを作成しました

ストアド プロシージャが 1 つのスレッドから呼び出された場合、結果を返すのに 2.5 秒かかります

ストアド プロシージャが 3 つのスレッドから呼び出された場合、結果を返すのに約 8.5 秒かかります。各スレッドの所要時間はほぼ同じです。

MyISMを利用していますが、手続きを並列実行するために必要な設定があれば教えてください。ストアドプロシージャで取得(選択)するだけで、更新/挿入は行われません

4

1 に答える 1

1

MySQL からデータをプルするスレッドの数を増やしても、必ずしもスループットが向上するとは限りません。複数のスレッドで同じクエリを実行しているため、コンテキスト切り替えのオーバーヘッドが増加します。

スレッド化を利用するには、入力/出力/ネットワーク遅延などのアイドル時間 (実際のアイドル時間) を利用する必要があります。例:

  • スレッドは MySQL からいくつかのデータを取得し、処理を開始します。たとえば、インターフェイスを介して通知を送信します。そのインターフェイスが同期の場合、スレッドはスタックしています。
  • つまり、DB(Idle) からデータを取得して処理します。

そのような遅延/アイドリング スレッドがなければ、オーバーヘッド IMO が発生するだけです。

于 2013-02-14T07:34:53.833 に答える