SSAFY11th-book-study / book-study

0 stars 0 forks source link

[6.6.1] 트랜잭션 readonly의 데이터 엑세스 기술에 따른 성능 향상 #70

Open hj-k66 opened 3 months ago

hj-k66 commented 3 months ago

516p에서 트랜잭션을 readonly로 설정해두면 데이터 엑세스 기술에 따라서 성능이 향상될 수도 있다고 합니다. 왜 성능이 향상되나 찾아봤을 때, 주로 JPA 관련 내용으로 JPA는 변경을 감지하여 데이터를 수정하는데, readOnly = true 설정을 해놓으면 이런 변경 감지를 비활성화해 변경감지를 위한 스냅샷 저장하는 동작을 하지 않아 성능이 향상된다고 합니다.

그렇다면 JdbcTemplate이나 Mybatis는 변경 감지를 제공하지 않는 것으로 알고 있는데, 이 기술들을 사용할 때도 readonly를 사용했을 때 성능이 향상되는지 궁금합니다.

gmelon commented 3 months ago

JdbcTemplate와 Mybatis는 indeed 변경 감지를 직접 제공하지 않습니다. JdbcTemplate은 JDBC의 간편한 추상화 계층을 제공하고, Mybatis는 SQL 쿼리와 자바 객체 사이의 매핑을 처리합니다. 따라서 readOnly 속성을 사용하여 변경 감지를 비활성화하는 것이 목적이 아니라, 단순히 데이터베이스 트랜잭션을 읽기 전용으로 설정하는 것이 될 것입니다.

그러나 readOnly 속성은 여전히 JdbcTemplate나 Mybatis에서 성능 향상을 가져올 수 있습니다. 이것은 주로 데이터베이스에 대한 추가적인 최적화를 가능하게 하기 때문입니다. 예를 들어, 데이터베이스는 읽기 전용 트랜잭션을 처리할 때 더 높은 수준의 병렬 처리나 캐싱을 적용할 수 있습니다. 또한, 데이터베이스는 읽기 전용 트랜잭션에서 사용되는 리소스를 더 효율적으로 관리할 수 있습니다.

따라서 JdbcTemplate나 Mybatis에서도 readOnly 속성을 사용하는 것은 여전히 성능 향상을 가져올 수 있습니다. 그러나 이것은 변경 감지를 비활성화하는 것이 목적이 아니라, 데이터베이스에 대한 추가적인 최적화를 가능하게 하는 것입니다.

hj-k66 commented 3 months ago

https://kong-dev.tistory.com/237