トランザクションの外部でSQLを実行するか、READ_UNCOMMITTED分離モードでSQLを実行するかの違いは何ですか?READ_UNCOMMITTEDと取引はありませんか?
明確化:私はjava.sql.Connection.TRANSACTION_NONEとjava.sql.Connection.TRANSACTION_READ_UNCOMMITTED
トランザクションの外部でSQLを実行するか、READ_UNCOMMITTED分離モードでSQLを実行するかの違いは何ですか?READ_UNCOMMITTEDと取引はありませんか?
明確化:私はjava.sql.Connection.TRANSACTION_NONEとjava.sql.Connection.TRANSACTION_READ_UNCOMMITTED
TRANSACTION_NONE
は、接続がトランザクションをまったくサポートしていないことを意味し、その接続にトランザクションセマンティクスを課す試みは失敗するはずです。おそらくあなたがCSVファイルのような "偽の"データベースを使っている場合を除いて、私はこれが今まで有用であるとは思えません。一方、接続がトランザクションを使用しており、他の接続のコミットされていないトランザクションからデータを読み取ることができることを意味します。 @Paxによると、これは非常に慎重に使用する必要があります。
も注意setTransactionIsolation
方法:それはトランザクションがサポートされていないことを指定するために使用することはできません
注
Connection.TRANSACTION_NONE
こと。
TRANSACTION_NONE
を強制的に使用することはできません。接続はトランザクションをサポートするか、サポートしていないか、サポートしていません。
READ_UNCOMMITTED
はまだ取引中であることを意味します。それでもアトミック書き込みは得られますが、それ以外のトランザクションは書き込みから分離されます。しかし、あなたの取引は他の人から分離されていません。 TRANSACTION_NONE
は無料です。だれからも隔離されません。
あなたが言うことは本当ですが、質問に答えません。 READ_UNCOMMITTEDとは何ですか?TRANSACTION_NONEから隔離されていませんか? – Gili
@ギリ:私はそう思った。 'READ_UNCOMMITTED'は依然としてあなたがトランザクション中であることを意味します。それでもアトミック書き込みは得られますが、それ以外のトランザクションは書き込みから分離されます。しかし、あなたの取引は他の人から分離されていません。 'TRANSACTION_NONE'は無料です。誰も何の関係もないからです。 – skaffman
すばらしい答え!上記の回答にあなたが書き込んだものを追加すると、それを受け入れたものとしてマークします。 – Gili
READ_UNCOMMITTEDの違いを理解しようとしている(またはダーティ・リード)あなたを完了することは至っていないトランザクションに関する情報を提供します。
取得された情報に一貫性がないため、通常はお勧めできません。わずかなデータは問題にならない報告アプリケーションではデッドロックを回避するために使用していますが、正確性(人の金銭や銀行に課金するなど)を気にしていれば、私はしません。
トランザクション外でSQLを実行しています(私はここでの更新を前提としています)。 ACIDの要件は、一般的に最も簡単な更新であってもトランザクションを必要とします。トランザクションを明示的に開始またはコミットすることはできませんが、少なくとも適切なリレーショナルDBMSの場合は保証されます。
http://download.oracle.com/javase/6/docs/api/java/sql/Connection.html#TRANSACTION_NONEにはどのようなマップがありますか? – Gili
トランザクション外でSQLが意味することを明確にすることはできますか? –
@Conrad、質問を更新しました。 – Gili