2009-08-02 12 views
1

MyISAMはテーブルレベルのロックを使用します。つまり、INSERT/UPDATE:が実行されている間SELECT:がブロックされます。MyISAMを使用しているときにMySQLのSELECT:sをロックする方法

ブロックされたSELECTの問題を軽減するために:私は、これらのパラメータを使用してMySQLを設定することを推奨してきたS:

  • low_priority_updates=1
  • concurrent_insert=2

low_priority_updates=1を使用しての欠点は何であり、 concurrent_insert=2

答えて

2

は、ここでは、この

ロックの優先順位の一部をカバーしていgreat post from the MySQL Performance Blogです。デフォルトでは、MySQLはアップデートをより高い優先度の オペレーションとして扱います。 SELECT HIGH_PRIORITYまたはUPLATE LOW_PRIORITY を使用して調整したり、単に low_priority_updatesオプションを設定することができます。とにかく デフォルトの動作は、選択実行し、長い によってブロックされている任意のUPDATE 文がさらに をブロックすることを意味し、この表から選択 - 彼らは UPDATEが01​​完全にSELECTを待っている を実行するまで待機する必要があります。これは多くの場合、説明されていません と人々は考える - "OK。私は スクリプトを書いて短い更新をしますので、 は何もブロックしません " - それでもまだ は合計ブロックを引き起こす可能性があります。 は実行を選択します。

もう1つpost benchmarks concurrent_insertsとなりますが、ポストは現在3歳ですが、可能性が低いと考えられます。

関連する問題