ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Deferred Join이란? - 실습편
    CS/데이터베이스 2023. 11. 1. 00:01

    개요

    Deferred Join이란?-이론 편에 이어 직접 데이터를 세팅하고 성능이 얼마나 개선되는지 확인하는 실습을 진행해보고자 합니다.

     

    Spring Boot를 활용한 50만건의 데이터 세팅

    @Component
    class SettingData(
        private val memberJpaRepository: MemberJpaRepository,
    ): ApplicationRunner{
        override fun run(args: ApplicationArguments) {
            repeat(500_000){
                memberJpaRepository.save(MemberEntity(name = "test$it"))
            }
        }
    }

    어떤 방식으로 데이터를 적재하던 상관없습니다.

    쿼리문에 따른 실행계획과 성능을 살펴보기 위해 50만 건의 데이터를 적재하였습니다.

     

    전통적인 페이징 실행계획

    EXPLAIN ANALYZE
    SELECT *
    FROM member
    ORDER BY  member_id, birth_day
    LIMIT 20
    OFFSET 450000;

     

    280ms 정도 소요됩니다.

     

    Deferred Join 적용된 실행계획

    EXPLAIN ANALYZE
    SELECT *
    FROM member
    INNER JOIN (
        SELECT member_id FROM member ORDER BY birth_day, member_id LIMIT 20 OFFSET 450000
    ) AS member2 USING (member_id)
    ORDER BY member_id, birth_day;

    150ms 정도 소요됩니다.

    약 2배정도 속도가 개선되었습니다.

     

    커버링 인덱스를 충족시키기 위해 인덱스 추가

    CREATE INDEX index_name ON member (birth_day);

     

    Deferred Join Query의 실행계획을 다시 보면 100ms의 성능을 보여줍니다.

    이론보다는 아니지만 순차적으로 성능이 개선된 모습이 보입니다.

    'CS > 데이터베이스' 카테고리의 다른 글

    Outer Join 주의사항  (0) 2023.12.06
    CQRS 패턴이란?  (0) 2023.11.09
    Deferred Join이란? - 이론편  (0) 2023.10.28
    PostgreSQL 데드락 발생시키기  (0) 2023.08.23
    Hard Delete와 Soft Delete  (2) 2023.07.17

    댓글

Designed by Tistory.