1

MyISAMはテーブルレベルのロックを使用します。これは、INSERT / UPDATE:sの実行中にSELECT:sがブロックされることを意味します。

ブロックされたSELECTの問題を軽減するために、次のパラメータを使用してMySQLを構成することをお勧めします。

  • low_priority_updates=1
  • concurrent_insert=2

low_priority_updates=1とを使用することの欠点は何concurrent_insert=2ですか?

4

1 に答える 1

2

これは、MySQLPerformanceBlogからのすばらしい投稿です。

優先順位をロックします。デフォルトでは、MySQLは更新をより優先度の高い操作として扱います。SELECTHIGH_PRIORITYまたはUPDATELOW_PRIORITYを使用して調整するか、単にlow_priority_updatesオプションを設定することができます。とにかくデフォルトの動作は、長時間実行されるselectによってブロックされるUPDATEステートメントが、このテーブルからのそれ以上の選択もブロックすることを意味します。それらは、SELECTが完了するのを待機しているUPDATEが実行されるまで待機する必要があります。多くの場合、これは説明されておらず、人々は次のように考えています。スクリプトを作成して、短い更新を実行し、何もブロックしないようにします。」–長い選択が実行されている場合でも、ブロック全体が発生する可能性があります。

別の投稿はconcurrent_insertsのベンチマークを行い、考えられる欠点を強調していますが、投稿は現在3年前のものです。

于 2009-08-02T09:47:21.610 に答える