트랜잭션 외부에서 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 파일과 같은 "가짜"데이터베이스를 사용하는 경우를 제외하고는 유용하지 않은 것으로 나타났습니다.
READ_UNCOMMITTED
은 연결이 트랜잭션을 사용 중이며 다른 연결의 커밋되지 않은 트랜잭션에서 데이터를 읽을 수 있음을 의미합니다. @ 팩스가 말했듯이, 이것은 극도의주의와 함께 사용해야합니다.
참고 또한 setTransactionIsolation
방법은 거래가 지원되어 있지 않은 것을 지정하므로 사용할 수 없습니다
주
Connection.TRANSACTION_NONE
있다.
따라서 강제로 연결할 수 없습니다. TRANSACTION_NONE
- 연결은 트랜잭션을 지원하거나 지원하지 않으며, 그렇지 않은 경우이 방법으로 처리 할 수 없습니다.
READ_UNCOMMITTED
여전히 거래 중임을 의미합니다. 당신은 여전히 원자 적 쓰기를 얻고, 다른 트랜잭션들은 당신의 쓰기로부터 분리되어있다. 그러나 귀하의 거래는 다른 사람들로부터 격리되지 않습니다. TRANSACTION_NONE
은 무료입니다. 누구도 아무 것도 차단하지 않습니다.
당신이 말하는 것은 사실이지만 질문에 대답하지 않습니다. TRANSACTION_NONE에서 나를 고립시키는 READ_UNCOMMITTED는 무엇입니까? – Gili
@ 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