트린잭션 처리 시 주의 사항
데드락을 최소화 시키는 DBMS 대책
- 트랜잭션을 자주 commit
- 정해진 순서로 테이블에 엑세스
- 필요 없는 경우에 읽기 잠금 획득 사용을 피함
- 쿼리에 의한 잠금 범위 좁히거나 더 작은 것으로 함
- 한 테이블 복수 행을 순서 변경 없이 갱신하면 교착 상태 발생 쉬움
- 테이블 단위 잠금 획득해 갱신 직렬화
자제해야 하는 트랜잭션 처리
- Auto Commit
- 쿼리 단위로 커밋하는 설정
- 애플리케이션 잠금 실행 시 Commit의 부하가 너무 높음
- 긴 트랜잭션
- 데이터베이스 트랜잭션의 동시성이나 자원 유효성 저하
- 타임아웃 및 교착 상태 발생 가능
- 대량 처리를 한 개의 트랜잭션이 실행하는 것 지양해야 함
- 적당한 크기의 트랜잭션으로 나눠서 처리
- 처리 능력 이상의 트랜잭션 수
- 트랜잭션의 실행이 다른 트랜잭션의 잠금 때문에 막힐 수 있음
- 시스템 요건에 따라 동시 실행 커넥션 수 적절히 설정한다.
- 트랜잭션 관련 설정 확인
- 시스템 요건 및 애플리케이션 로직에 맞추어 트랜잭션 격리 수준 조정
- 예상되는 오류에 대처 가능한 형태로 애플리케이션 작성
Leave a comment