트랜잭션 크기 관리
트랜잭션을 사용하는 경우 트랜잭션을 가능한 한 짧게 유지하는 것이 중요합니다. 자동 커밋의 기본 모드는 setAutoCommit 메서드를 사용하여 설정하거나 해제할 수 있으며, 이 기본 모드에서는 모든 동작이 자동으로 커밋됩니다. 이 모드는 대부분의 개발자가 사용할 수 있는 가장 쉬운 모드입니다.
수동 트랜잭션을 사용하는 경우 코드에서 트랜잭션을 가능한 한 빨리 커밋해야 합니다. 트랜잭션을 열어 두면 다른 사용자가 데이터에 액세스하지 못하도록 차단됩니다. 예를 들어 좋은 프로그래밍 방법은 캐치 블록에 롤백 호출을 배치하고 finally
블록에 커밋 호출을 하는 것입니다. 그러나 이 방법은 애플리케이션의 디자인에 따라 달라집니다.
동시성을 개선하기 위해 트랜잭션 크기를 작게 유지합니다. 예를 들어 수동 트랜잭션을 시작하고 20,000행 테이블에서 10,000개의 행을 수정하는 경우 데이터를 읽는 사용자만 하더라도 테이블의 절반이 다른 모든 사용자로부터 차단됩니다. 수정 내용을 2,000행으로 줄이면 테이블의 90%를 사용할 수 있습니다.
또한 애플리케이션에서 차단 문제가 발생할 가능성이 있다면 잠금 제한 시간 설정을 사용하십시오. setLockTimeout 메서드를 사용하여 시간 제한을 설정할 수 있습니다. 잠금 시간 제한의 기본값은 -1입니다. 즉, 잠금을 기다리는 동안 무기한으로 차단됩니다. 잠금 제한 시간을 30초로 설정하면 다른 연결에 의해 연결이 차단된 경우 차단된 연결이 30초 내에 해제됩니다.