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