안녕하세요 프로시저 실행에 관한 문의 입니다.
예를들어
프로그램에서 루프를 돌려 A 프로시저를 호출합니다. 10번 호출합니다.
A 프로시저에는 파라미터 @ID INT, @ID2 INT, @ID3 INT
이렇게 3개를 받습니다.
문제는 작성된 프로시저를 DB에서 돌려보면 정상 작동합니다.
그런데 프로그램에서 호출할 경우 가끔 비정상으로 처리 됩니다.
여기서 의문점
1. 프로그램에서 루프로 프로시저를 호출할경우 먼저 호출한 프로시저가 끝나기 전에 두번째 호출한 같은 프로시저가 또 실행 되나요
2. 먼저 호출한 프로시저가 끝나지 않은 상태에서 또 호출할경우 두번째 호출된 프로시저의 파라미터값이 첫번째 실행되고 있는 파라미터값의 변형이 생길수 있나요
- 프로시저 처리의 결과값에 상관없이 프로그램에서 루프로 호출합니다. 혹시 몰라서 프로그램에서 sleep 만 적용
- 프로시저는 tran 적용은 하지 않았습니다. - 성능저하 가 있을까봐
- 프로시저의 tran 을 적용할 경우 프로시저에서 사용되는 모든 테이블은 락이 걸리나요
답변 부탁드립니다.
감사합니다.
Comment 1
-
처리짱
2015.01.21 11:09
1. 프로그램에서 쓰래드를 생성하여 호출하였을경우 동기화를 제대로 하지 않았다면 앞에 실행시킨 프로시져가 종료되기 전에 두번째 프로시져가 호출될수 있겠죠.
2. 프로시져 안에서 파라미터 값을 변형하지 않는 이상은 변하지가 않죠.
tran 상태에서 커밋이나 롤백을 안하면 그 안에 있는 테이블들은 락이 잡혀 있겠죠.. 음..
이상 허접한 답변을.. ;