[Mybatis] 쿼리 타임 아웃 설정(Query Timeout) 개념과 예제

쿼리 타임 아웃(Query Timeout)은 데이터베이스 쿼리가 일정 시간 내에 실행되지 않을 경우 해당 쿼리를 강제로 중단시키는 설정입니다. 이를 통해 쿼리의 실행이 길어지는 상황에서 애플리케이션의 응답성을 유지할 수 있습니다.

MyBatis에서 쿼리 타임 아웃을 설정하려면 statementTimeout 속성을 사용합니다.

예제: 쿼리 타임 아웃 설정

  1. 매퍼 XML 파일에서 쿼리에 statementTimeout 속성 추가
<select id="selectBooks" resultType="Book" statementTimeout="5000">
    SELECT * FROM books
</select>` 

위의 예제에서 statementTimeout 속성 값으로 5000을 설정하였는데, 이는 5초 동안 쿼리 실행이 완료되지 않으면 중단되도록 설정한 것입니다.

  1. Java 코드에서 queryTimeout 속성을 사용하여 쿼리 실행
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
    BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);
    
    // 쿼리 타임 아웃 3초로 설정
    List<Book> books = bookMapper.selectBooks(3000);
}` 

위의 예제에서는 selectBooks 메서드를 호출할 때 쿼리 타임 아웃을 3초로 설정하였습니다. 이렇게 하면 쿼리가 3초 동안 실행되지 않으면 중단될 것입니다.

쿼리 타임 아웃은 데이터베이스 쿼리의 실행 시간을 제한하여 응답성을 유지하고, 장애 상황을 방지하기 위해 중요한 설정 중 하나입니다.