관련Post :
http://blog.daonelab.com/post/26/1546/
http://blog.daonelab.com/post/26/336/

 

1. Oracle
----------------------------------------------------------------------------------------------------------------------
한 세션에서 임의의 Table에 insert, update, delete 구문으로 Transaction을 commit이나 rollback으로 종료 시지키 않더라도

다른 세션에서는 해당 Table에 현재 진행중인 Transaction이전까지 commit된 데이터는 조회할 수 있다.

즉. Oracle은 Table전체의 Lock이 발생하지 않는다.

 

2. MSSQL
----------------------------------------------------------------------------------------------------------------------
한 세션에서 임의의 Table에 Begin tran 으로 시작하는 insert, update, delete 구문으로 Transaction을 commit tran이나 rollback tran으로 종료하지 않으면

다른 세션에서는 해당 Table의 데이터를 조회를 못하고 Blocking 상태로 해당 Transaction이 종료되기를 대기한다.

즉, MSSQL은 Table전체에 Lock이 발생한다.

단 Transaction isolation level을 

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 로 하거나

조회 조건에 WITH (NOLOCK) 옵션으로 조회할 수 있다.

단 이때 조회되는 데이터에는 현재 진행중인 Transaction에서 변경한 데이터까지 모두 조회된다. 즉 Phantom 데이터까지 포함해서 조회된다.