2011年01月21日

テーブルLockについて

テーブルLockについて

排他制御をする際には、テーブルをLockする必要があります。

Lockの種類


LockにはRead,Writeの2種類あります。











ロック種類自スレッド他スレッド
ReadRead可。Write不可Read可,WriteはBlockされる
WriteRead&Write可Read&Writeブロックされる


自スレッドで更新を行う場合はWriteで、更新を行わない時(Selectのみ)はReadでLockすればOKかと思います。

命令構文


実際にLockする時の構文は、

LOCK TABLES テーブル名1,テーブル名2... Lock種類;

で記述します。例えば「names,agesという2テーブルをWriteでLockする場合」は、

LOCK TABLES names,ages WRITE;

とします。

Lockを解除する場合は、

UNLOCK TABLES;

とすればOKです。

Lockの統計情報を見る


MySQLのshow statusコマンドでLock関係の情報がいくつか見ることができます。

> show status;


Table_locks_immediate:Lockされた回数
Table_locks_waited:Lockがすぐに実行されず待機が必要だった回数。数値が大きいようだったらパフォーマンスに問題があるかも

Lockされてるスレッドの確認


MySQLのshow processlistコマンドでStateがLockになっているスレッドがあった場合は、Lock解除待ちになっている。


ラベル:MySQL SQL
posted by purigen at 10:00| Comment(0) | TrackBack(0) | DB | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。