로그성 데이터를 지속적으로 저장하고 , 조회하는 프로그램입니다.
해당 테이블은 , 동시에 여러군데저 저장을 하게 됩니다. 데이터 들어오는 곳이 한 5군데 됩니다.
주로 시간과 텍스트 데이터 가 전부 입니다.
대부분의 저정 프로시저가 아래와 같은 구조 입니다.
트랜잭션 = dbconn.BeginTransaction(IsolationLevel.ReadUncommitted)
커맨드.Transaction = 트랜잭션
커맨드.CommandType = CommandType.Text
sql = "UPDATE TEst SET 신호1 = @신호1 , 신호2 = @신호2 ," & _
" 신호3 = @신호3 " & _
" where test = '" & 번호 & "' and grid=" & "1"
커맨드.CommandText = sql
커맨드.ExecuteNonQuery()
트랜잭션.Commit()
특정 업체쪽 서버가 가끔 한 6개월이나 1년? 마다 저장도 안되고 , 셀렉트도 안되는 먹통 현상이 있습니다.
당시에 제가 테이블하나를 엔터프라이즈 관리자에서 열어볼려고 했는데.. 열리지도 않더라구요
더 시간을 지체할 수는 없고 해서..
DB서버를 재부팅하면 감쪽 같이 문제 해결이 됩니다.
OS도 여러번 설치해보고 , 이것저것 해봤는데.. 아시다시피.. 아.. 이런게 꼭 밤이나 새벽에만 그러네요..
위 와 같이 저장하는 것이 동시에 여러군데에서 실행하는 데.... 대부분 insert 입니다. ( 위는 샘플 )
아래처럼.. 트랜잭션을 빼버리면 별다른 문제가 없을까요?
단순하게 테이블 하나데 데이터를 저정하는 경우에는 트랜잭션을 명시적으로 해야 하는지
아닌지 잘 모르겠습니다.
아래처럼.. 트랜잭션을 빼고 그저 커맨드만 설정해서 실행하면
문제가 없을까요 ?
커맨드.CommandType = CommandType.Text
sql = "UPDATE TEst SET 신호1 = @신호1 , 신호2 = @신호2 ," & _
" 신호3 = @신호3 " & _
" where test = '" & 번호 & "' and grid=" & "1"
커맨드.CommandText = sql
커맨드.ExecuteNonQuery()
Comment 1
-
Hisory
2014.05.19 09:58
프로그램단에서 트랜잭션을 처리하네여..
경험상 단순 in / up 이면 프로그램보다는 프로시져에서 트랜잭션 처리를 하라고 말씀드리고 싶네여
트랜잭션을 빼버린다고 해서 해당 문제는 해결될것 같지 않을것 같네여.
또한 update 구문에서 index가 제대로 걸려있는지도 확인해보시고여...