데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요 프로시저 실행에 관한 문의 입니다.
예를들어
프로그램에서 루프를 돌려 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 상태에서 커밋이나 롤백을 안하면 그 안에 있는 테이블들은 락이 잡혀 있겠죠.. 음..
이상 허접한 답변을.. ;