MySQL:FULLTEXTインデックスで検索すると、ベースがハングします。 問題解決

数か月前に、データベース検索に関するわずかなバグを見つけました。 そして今日、 HTTP、RFC 3986、およびブラウザのトピックを読んで、私は大衆に伝えることにしました。突然誰かも登場するでしょう。



問題

UTF8のサイトがあります。 UTF8のMySQLベースとFULLTEXTインデックスがあります。 検索すると、ブールモードになります。 特定の種類のクエリでは、データベースが応答を停止します。 また、MySQLサーバー内の1つのデータベースのみ。 デーモンの通常の再起動は機能せず、ハードmysql -9でのみ再起動します。

この種の問題は、MySQL 5.0.51a以降で発生します。



なんで?

そして、これはMySQL自体の何らかの奇妙なバグであり、何らかの理由で彼らがそれを解決するために急いでいないということです。 検索フレーズがcp1251エンコーディングで、ベースがUTF8である場合、そのようなクエリのN番目で、データベースはFULLTEXT Initialization状態でハングし、インデックスを持つテーブルだけでなく、すべてのテーブルをロックします。 最初の要求からは表示されませんが、1日に1〜2回発生する可能性があります。





検索フレーズをクエリに代入する前に、必要に応じてUTF8に変換します。



誰のせいですか?

そして、ここで私はこの話を思い出させたトピックが何に関係しているかをお話しします。

1つのサイトを趣味としてサポートしています。 このサイトから、検索プラグインをOpenSearch形式でブラウザーに配置できます。 結局のところ、一部のユーザーのブラウザは、何らかの理由でこのプラグインを検索するときに、サイトにWindows-1251エンコードが必要であると考えています。 彼らはどこからそんな自信を得るのでしょうか?わかりません。 おそらくFirefoxは、かつてサイトがWindowsエンコーディングであったことを思い出していました。 おそらく、これはプラグインコードのエンコードの不足の影響を受けます。 それとも、単に磁気嵐、問題は1日1回または2回現れた:)



バグレポートへのリンク

bugs.mysql.com/bug.php?id=37067



All Articles