0

仕事のために非常に複雑なアプリケーションを書かなければなりません。私の以前のソフトウェアはすべてローカル エリアで使用されるソフトウェアであり、クラウド上のアプリケーションではありませんでした。

データベースを変更するすべてのクエリが同時実行性の問題にさらされていることに気付きました。シリアル化可能な分離レベルで書き込みロックとトランザクションを使用して問題を解決しました。しかし、読み取りクエリのみで、読み取りロックを作成する必要がありますか? 別のクエリがこれらのレコードの一部を削除しているときに、テーブルからいくつかのレコードを読み取るとどうなりますか? 私はダーティリードを持っています。

では、クエリの同時実行性の問題を通常どのように解決するのか説明していただけますか? 私はphpを使用しています。通常、書き込みロックを使用しますか? 今のところ、その問題に気づいたことはありません。私は小さな会社で Web 開発者として働いていますが、なぜこのソリューションに出会ったことがないのかわかりません。

ありがとう、私の悪い英語でごめんなさい。

4

1 に答える 1

0

書き込みをトランザクションにラップし、ロックを使用しないでください。

PHP では、アプリケーションがクラッシュしてロックしたままになり、データベース全体がリセットされるまで使用できなくなるのは非常に簡単です。コミット、ロールバック、または接続が切断されると、トランザクションは自動的に解放されます。

あなたが話していることのほとんどは、見当違いのパラノイアだと思います。InnoDB のような適切なデータベース エンジンを使用している場合、問題は発生しません。

于 2013-08-28T16:18:39.400 に答える