1

私は Percona サーバー (MySQL) を使用しており、現在、アプリケーションを使用する複数のユーザーがいるネットワーク デスクトップ アプリケーションを開発しています。トランザクションを使用するアプリケーション データベース innodb ですが、どのトランザクション分離を使用する必要があるかを選択する際に問題があります。アプリケーションには財務記録があるため、機密性が高くなります。それで、誰かが私が使用しなければならないトランザクション分離を決定するのを手伝ってくれますか?

4

1 に答える 1

5

@deceze と @zerkms は正しいです。最適なトランザクション分離を決定するのは、データの性質ではありません。これは、アプリケーションとそのクエリの性質です。同じアプリケーション内で両方の分離レベルを使用する場合さえあるかもしれません。

反復可能な読み取りトランザクションにより、特定のトランザクション中に同じデータを複数回クエリでき、その間にデータが他のセッションによって変更されていても、クエリは不変のデータを返します。セッションがコミットされたとしても、セッションが新しいトランザクションを開始するまで、セッションはこれらの変更を認識しません。これは、たとえば、すべてのデータの論理ダンプに役立ちます。また、複数の手順を実行する複雑なレポートで、同じテーブルを複数回読み取る必要があります。

Read-committedでは、他のセッションが同時にデータを変更することもできますが、トランザクションは常に最新のコミットされたデータの状態を確認できます。したがって、同じトランザクションであっても、同じクエリが異なる (より最新の) 結果を返す可能性があります。これは、長時間実行されるトランザクションのためにデータベースが古い行バージョンを保持する必要性を減らすため、便利です。

シリアライズ可能でコミットされていない読み取り分離レベルもありますが、これらはほとんど使用されません。

于 2013-03-19T02:13:36.763 に答える