none
MS SQL 2012 문의 RRS feed

  • 질문

  • 안녕하세요.

    현재 운영중인 사이트에서 대량으로 A라는 테이블에 INSERT 하는 작업을 하고 있습니다.

    A라는 테이블에 INSERT or UPDATE 작업을 하는도중 다른 사람이 A라는 테이블을 SELECT 할때

    조회가 되지 않습니다.

    오라클 같은 경우는 동시에 INSERT, UPDATE, SELECT를 해도 아무 문제가 없습니다.

    환경은 Windows Server 2012, MS SQL 서버 2012 입니다.

    답변 부탁드립니다.

    이상입니다.

    2017년 10월 18일 수요일 오전 6:21

모든 응답

  • 안녕하세요.

    SQL Server는 오라클과는 다르게 읽기 작업에 대해서도 shared lock이라는 잠금을 겁니다.

    이로 인해서 변경중인 데이터를 읽는데 blocking이 발생합니다.

     

    이를 피해갈 수 있는 방법이 몇가지 있는데, 일단 가장 쉬운 방법은 snapshot isolation을 사용하는 것입니다.

    데이터베이스 레벨에서도 설정이 가능한데 아래와 같이 설정할 수 있습니다.

    ALTER DATABASE db이름 SET READ_COMMITTED_SNAPSHOT ON

    위 옵션을 설정하면 오라클과 같이 데이터 변경중이어도 해당 데이터에 대한 읽기가 가능합니다.

    Read Committed Snapshot Isolation으로 검색해 보시면 많은 자료를 확인하실 수 있습니다.

      

    답변이 도움이 되셨으면 좋겠습니다.

    감사합니다.

    • 답변으로 제안됨 Boram Yi 2017년 10월 24일 화요일 오전 2:53
    2017년 10월 20일 금요일 오전 6:06