[데이터 베이스] 자바에서 대용량 조회 시 애플리케이션과 데이터베이스는 어떻게 동작하는가?
목차 [데이터 베이스] 자바에서 대용량 조회 시 애플리케이션과 데이터베이스는 어떻게 동작하는가? [데이터 베이스] Cursor 란? 🤔 대용량 조회 시 애플리케이션과 데이터베이스는 어떻게 동작하는가?대용량 데이터를 조회해야 하는 상황이 생기면, 우리는 종종 “애플리케이션 메모리는 괜찮을까?”, “DB에 부하가 가지는 않을까?” 같은 고민을 하게 됩니다. 자바 JDBC 에서는 이런 상황을 제어하기 위해 cursor 와 fetch size 를 이용합니다. 🕵️♂️ 대용량 조회의 기본 흐름JDBC로 쿼리를 실행할 때, 결과가 수천~수만 건이라면 어떻게 처리될까요? 예를 들어, 아래 코드를 실행했다고 가정해 봅시다. PreparedStatement ps = conn.prepareStatement("SELECT * FROM large_table");ps.setFetchSize(100); // 한 번에 100건씩 가져오도록 설정ResultSet rs = ps.executeQuery(); 이 코드가 실행될 때 내부적으로 일어나는 동작은 아래와 같습니다 애플리케이션이 DB에 쿼리를 날립니다. DB는 전체 결과를 준비하고 커서를 생성합니다. JDBC 드라이버는 커서로부터 100 건씩 row 를 가져옴니다 row 를 다 소비하면 JDBC는 다음 100 건을 요청합니다. 이 과정을 반복하여 전체 데이터를 처리합니다.