2011-05-20 8 views
1

我々は我々のアプリケーションでビューをマージし、ドキュメントの以下の不可解な言語に出くわしたMySQLを使用して検討している:MySQL VIEWのロック動作?

明示的TEMPTABLEを選択する理由は、ロックが一時的に後に、基礎となるテーブルにリリースすることができるということですテーブルが作成され、ステートメントの処理が完了する前に使用されます。これにより、MERGEアルゴリズムよりも速くロックが解除されるため、ビューを使用する他のクライアントは長い間ブロックされません。

私がこれを読んでいるところは、マージビューの選択では読み込みロックが取られますが、それは正しいとは思われません。 2人のクライアントがビューから同時にテーブルから読み込むことができますか?

ありがとうございます!

答えて

0

私が読んでいるのは、ロック(データを読み込む必要がありますか?)を実行している間は、TEMPTABLEを作成してロックを解除するということです。それ以降に実行される作業はロックなしで実行できるため、他のクライアントは基礎となるテーブルを利用することができます。

読み取りロックは、このようにすばやく解放される可能性があります。

+0

私の具体的な質問は次のとおりです。「2人のクライアントがビューから同時に読めるのは、テーブルからできる方法ですか?」反映するように更新 - 私は答えが "はい"と推測しています。 – spieden

1

MyISAMテーブルでビューを作成すると、SELECTとUPDATEは相互排他的なので、テーブルのSELECT/UPDATEはビューのUPDATE/SELECTをブロックします。ロックを短くしたいと思うでしょう。

InnoDBでは、これは問題ではありません。

+0

確かに、これは、ビューで導入されたものよりもテーブルロックが一般的にどのように機能するかの関数です。 "他のクライアント"が "ビューを使用してブロックされていない"という言葉は、ビュー自体が何らかの形でロックされていると思うようになります。 – spieden

関連する問題