アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPのサンプルにテーブルロックがあったのですが、
使いどころが分からないので、教えてください。

どういう時にテーブルロックを使用するのでしょうか。

サンプルの解説だと、
「LOCK TABLES」構文を使って会員と管理者が同時に実行する可能性がある更新と削除で
テーブルをロックします、
とあるのですが、

例えば、:INSERTとかでは、テーブルをロックしなくてよいのでしょうか?

これまで、気にしたことはなかったのですが、
例えば、(テーブルロックをしていない)掲示板で、たまたま同時に書き込みをしたり、しても、特に問題ないのでしょうか?

どういう時に、テーブルロックをして、
どういう時にテーブルロックをしなくてよいか、分かりません。

例えば、同じ掲示板の機能を保持するサイトが複数あった場合、
テーブルロックというのは、
大体、処理別でこういう風にする、と決まっているようなものなのでしょうか?

あるいは、データの持ち方によって、
それこそサイト毎に、実装(どこでロックするか等)はそれぞれ変わってくるようなものなのでしょうか?

A 回答 (1件)

MySQLのInnodbエンジンなら基本は行ロックです。


しかし、行ロックはロックの粒度が細かい分、管理するリソースが大きくなりがちです。
このような場合、テーブル全体をロックして処理するほうがパフォーマンスが上がる場合があります。
もちろん、LOCK TABLEでロック中は他のセッションから更新できませんから、常にこのようなやり方が有効な訳ではありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!