DBでは、個々のデータ更新処理(例えば単一のUPDATE文やINSERT文)は、ATOMICに実行されます。ATOMICというのはつまり、殆ど同時に複数のSQL文が実行されても、データが壊れないということです。 これはDBMSが排他処理をやってくれるためです。一方ファイルの場合は、プログラマが明示的に排他処理を書かなければなりません(ANo1さんのいうように。PHPでは通常flock()を使います)。 ただ、ANo2さんの書いたように、明示的にロックを掛ける必要があるケースは存在します。例えばホームページのアクセス数を表示するカウンタの数値の場合は、ロックが必要です。 カウンタでロックをしないと、以下のような不整合が起こる可能性があります。 【Aさん】 【Bさん】 SELECT文でDBのカウンタ値を取得 (カウンタ値=123) SELECT文でDBのカウンタ