2011-02-18 3 views
0

내 프로그램에서 각 스레드가 실행 중입니다 (각 스레드는 DB에 자체 연결되어 있습니다). 동일한 테이블에 액세스하려고하면 문제가 발생합니까? 두 개의 다른 DB 연결에서 동일한 DB 테이블에 액세스하는 다중 스레드

내가 가진 간단한

될 :

  • 2 개 스레드 T1 및 T2

  • 2 DB 연결 C1 및 C2

  • 1 테이블 DBTable1

  • T1은 항상 C1과 T2를 사용합니다. alwa YS는 C2

  • T1이

  • T2 테이블 DBTable1이

어떤 문제가있을 것인가를 읽고 테이블 DBTable1을 업데이트, 삭제, 삽입을 계속하다 사용?

MS SQL 서버를 사용하고 있습니다.

답변

0

데이터베이스는 transactions을 사용하여이 시나리오에서 동시 사용자를 처리하도록 특별히 설계되었습니다.

+0

두 스레드 모두에서 트랜잭션을 사용하고 있지 않습니다. – user623016

+0

현재 있습니다. 내 링크에서 설명하는 것처럼 SQL 데이터베이스는 트랜잭션 지향적입니다. 기본값은 각 명령문 다음에 자동 커밋입니다. – Will

0

아무런 문제가 없습니다. 데이터베이스 엔진은 동시성을 위해 설계되었습니다.

T1이 쓰는 동안 T2가 호출하면 T1이 완료 될 때까지 대기합니다. 이것은 문제가되지 않습니다.

0

예, 데이터베이스 트랜잭션이 ACID을 따르므로 서로 다른 스레드 조작간에 Isolation 속성을 통해 동시성이 보장됩니다.

관련 문제