1

ときどき、MySQL で特に長時間実行される全文クエリを取得します。クエリは非常に長時間実行されます。現在、50,000 秒間実行されているクエリが表示されています (まだ実行中です)。クエリで Kill または Kill Query を使用しても何も起こらないようです。また、クライアント側のコマンド Timeout は 30 秒であるため、クライアントはすでに失敗して立ち去っていますが、サーバーはクエリを実行し続け、かなりのリソースを消費します。以前は、このようなクエリの実行を停止するには、MySQL サービスを再起動する必要がありました。これらのクエリを停止する他の方法はありますか。そもそもクエリが実行されないようにするための対策を講じていますが、それでも時々実行されてしまい、それは大きな苦痛です. 主な理由は、クエリの実行中にテーブルの更新を実行できないためです。

長時間実行されるクエリの例は、次のようなものです。

SELECT id,Title From Articles WHERE MATCH(ArticleText) AGAINST('+Nintendo*HD*Wii*' IN BOOLEAN MODE)

これは、検索文字列の途中と文字列の末尾に * があるため、特に長く実行されます。

4

1 に答える 1

0

どのバージョンの MySQL を使用していますか? アップグレードすることで、これを修正できる場合があります。

また、そのサンプルクエリは本物ですか? 検索文字列は、「+Nintendo HD Wii *」ではなく「+Nintendo* +HD* +Wii*」のようなものになると思います。

5.0 ではこの種の問題は発生していませんが、MySQL 5.1 の以前のリリースでは、検索文字列の特定のコンテンツに関して非常によく似た問題がいくつか見られ、フルテキスト クエリがハングして強制終了できなくなりました。

これは 5.1.42 で見たもので、5.1.45 で修正されました: http://bugs.mysql.com/bug.php?id=50556 これは次の複製としてマークされていました: http://bugs.mysql .com/bug.php?id=50351

検索文字列にコロンが含まれているとフルテキスト クエリがハングするという別の問題を報告しました。この問題は 5.1.31 に存在し、5.1.37 で修正されました。

于 2010-06-22T23:01:10.997 に答える