PHPでmysqlに1つのテーブルだけの掲示板を作るのですが、複数人が同時に書き込んだり削除、修正があり得ます。
1つのレコードに対しては書き込み本人の1人だけが修正削除できるので1レコードを同時に更新することはないです。
本人の書き込みだけを一気に削除する処理もつけます。
利用者は40人前後ですが利用時間が集中するかもしれないです。
これまで1つのPCから更新するものしか作った事がなく、ストレージも気にする事無く
デフォルトのMyISAMしか使っておらず排他制御を考えたことがありませんでした。
今回のような1つのレコードの同時更新はないけど、1つのテーブル内には同時に
書き込みや削除を行う場合、排他制御は必要でしょうか?
テーブルのストレージをInnoDBにする必要ありでしょうか?
InnoDBにしてなおかつ、ロック等をかけるのが基本でしょうか?
教えて頂ければ助かりますm(__)m
まずMyISAMはテーブルロックが行われるため同時書き込みができません
(待ちが発生します)
現行バージョンはデフォルトがInnoDBになっていますし
特別な理由(MyISAMのメリットが必要)がない限りInnoDBを選択すべきと思います。
ロジカルな排他制御については、対象レコードについて
「書き込み本人の1人だけが修正削除」が担保されるなら
とりあえずは不要です。
ありがとうございます、安心しました。
2013/11/26 23:12:09現行のデフォルトがInnoDBというのも知りませんでした。。
コメントしてくれたcawbridge2013さんもすごく参考になりました。
便利なものを使わせてもらってるとつくづく思います。