次のシナリオがあります。
約 400 万行の特定の MyISAM テーブルを持つデータベースがあります。私はストアド プロシージャ (MySQL バージョン 5.1) を使用し、特に 1 つを使用して、さまざまな基準でこれらの行を検索します。このテーブルにはいくつかのインデックスがあり、このストアド プロシージャを介したクエリは通常非常に高速です (1 秒未満)。基本的に、私は準備されたステートメントを使用し、この検索 sp でいくつかの動的 SQL を作成して実行します。準備済みステートメントを実行した後、「DEALLOCATE PREPARED stmt;」を実行します。
ほとんどのクエリは 1 秒未満で実行されます (私は LIMIT を使用して、常に 15 行のみを取得します)。ただし、まれに実行に時間がかかるクエリがいくつかあります (たとえば 2 ~ 3 秒)。検索テーブルをできる限り最適化しました。
私は Web アプリケーションを開発しました。私の開発マシンでは、高速なクエリを 1 秒以内に実行して結果を確認できます。
ただし、2 つのブラウザー インスタンスを開いて (開発マシンに対して) 同時検索を実行すると、1 つは実行時間の長いクエリで、もう 1 つはより高速なクエリで、結果が同時に返されます。高速なクエリは、低速なクエリが終了するのを待ってから結果を返します。つまり、両方のクエリに 2 ~ 3 秒かかります...
これには理由がありますか?MyISAM は互いに関係なく SELECTS を処理すると思っていたので、現在これは私が経験している動作ではありません...
前もって感謝します!ティム