by 김선우 [DB 기타] [2019.09.26 08:18:38]
로직처리후에 결과 적으로 업데이트와 인서트 건수가 0건일때
나중에 commit을 건수와 상관없이 실행하고 있는데
0건이면 commit을 할 필요가 없지 않냐고 하는데 해도 성능적으로 무방하지 않나요?
대상테이블에는 약 1억건정도의 레코드가 있는 테이블 입니다.
논리적으로 보면 하지 않는게 맞는거 같은데
프로시저로 짠게 하니고 그냥 sql처리인데
건수체크를 하고 테스트 비용을 생각했을때 무조건 commit이 이상한건가요?
의견 부탁드립니다.
업데이트와 인서트가 되면 tx lock(row lock)이 걸립니다. 이 경우 commit이 필요합니다.
데이터 변경이 없다면 개발자 입장에서는 commit이 필요 없을 수 있는데요.
업데이트와 인서트문을 날리면 tm lock(table lock)도 걸립니다.
데이터 변경이 없다고 하여 commit을 안 하면 tm lock은 해제가 안 되고
DBA가 테이블 alter 등의 작업을 할 때 해당 lock 때문에 테이블 변경이 불가합니다.
insert, delete, update 명령어 후에는 commit이 있어야 합니다.
소스를 안봐서 모르긴한데 상황에 따라 건수 채크하는게 더비효율일지도 모르지요