1

mysqlクエリを取得してmyisamテーブルをロックしないようにする方法はありますか?

私の問題は、Sphinx Searchインデクサーがmyisamテーブルの1つを60秒以上ロックし、更新ステートメントがロックの解放を待機するように見えることです。これにより、他のクエリが更新ステートメントの完了を待機します。インデクサーはmysql_use_resultを使用し、mysql_free_resultを呼び出す前にインデックス作成作業の多くを実行します。これは少なくとも何が起こっているかについての私の最善の推測ですが、これがあなたにとって間違っていると思われる場合は私に知らせてください。

この問題を解決する1つの方法は、インデクサークエリをID範囲で細分化することだと思われます。しかし、他のクエリが同時に実行されるのを防ぐためにこのクエリは本当に必要ないので、これを行う必要はないようです。このユースケースでは、一貫性よりもパフォーマンスの方がはるかに重要です。

ありがとう!

4

1 に答える 1

1

mysqlクエリは常にmyisamテーブルの読み取りロックを取得しているようです。

私の問題の解決策は、my.cnfの[mysqld]セクションでlow-priority-updates=1に設定することでした。

読み取りロックを使用せずにmysqlでクエリを実行する方法があるかどうかはまだ疑問ですが、そのためのより良いタイトルで別の質問を開きます。

ありがとう!

于 2010-01-07T07:39:29.027 に答える