참조하십시오. 이것은 사실이 아닙니다. 이것을 직관적으로 볼 수있는 예를 만들어 봅시다. 다음과 같은 두 가지 거래를 비교 :
--A
select * from T where ID = 1
select * from T where ID = 2
--B
select * from T where ID IN (1, 2)
벼락치기 두 (적어도 모든 RDBMS'es 및 스토리지 엔진에) 어떤 동시성 문제를 방지하지 않습니다 하나의 문으로 읽습니다. 두 트랜잭션은 SQL Server에서 동일한 잠금 및 일관성 속성을 예로들 수 있습니다. 일부 다른 RDBMS는 각 명령문에 대해 MVCC를 사용합니다. MVCC는 직렬화 기능을 제공하지 않습니다. serializability 하에서 만 동시성 문제가 항상 안전합니다.
하나 또는 두 개의 문장을 사용하는지 여부는 아무런 차이가 없습니다. 자동 커밋 또는 동일하지 않음.
이이 아닌 READ COMMITTED
에서 직렬화됩니다. 따라서 다음을보십시오 : READ COMMITTED
을 사용하지 않고 동시에 자동 커밋해야하는 이유가 있습니다.
출처
2014-07-11 21:52:48
usr
쿼리가 동일한 테이블을 두 번 읽고 다른 결과를 얻는다고 생각합니다. –
@MK conn.execute ("SELECT * FROM TABLE; SELECT * FROM TABLE")와 같은 다중 명령문을 의미합니까? – velikolay
@velikolay 내 생각에 MK.의 의견은 'select * from employees e join m. m.id = e.manager'와 같은 자체 조인을 가진 쿼리에 관한 것입니다. – hvd