관리자페이지 고객목록 1000건이상일때 속도 문제 :: zeroOne
728x90

프론트엔드 관리자 페이지 작업을 하고있는데 

현재 서비스 가입자가 1100명에 육박하고있다.

 

급격하게 늘어나는 숫자에 일에 치여서 교통사고로 사망하기 직전이긴하지만

관리자페이지가 열리는데 10초는 걸리니 문제해결을 안 할 수 가 있 나?? 

휴가나 떠나고싶다~~~~~~(정신나갔습니다)

 


네 정신차리고

현재 user테이블말고 따로 만든 view 구성입니다.

다른테이블에서 가져올 컬럼들을 전부 join해서 성능이 저하된걸로 확인하고 있습니다.

select `u`.`id`                                                     AS `id`,
       `u`.`name`                                                   AS `name`,
       `u`.`nickname`                                               AS `nick_name`,
       `u`.`status`                                                 AS `status`,
       `u`.`mobile`                                                 AS `mobile`,
       (select `code`.`code_value`
        from `code`
        where (`code`.`id` = `u`.`sex_id`)) AS `sex_code`,
       `u`.`address`                                                AS `address`,
       `u`.`detail_address`                                         AS `address_detail`,
       `u`.`held_mileage`                                           AS `held_mileage`,
       `u`.`held_point`                                             AS `held_point`,
       `u`.`sex_id`                                                 AS `sex_id`,
       `u`.`birthday`                                               AS `birth_day`,
       `doc`.`url`                                                  AS `impaired_url`,
       `u`.`create_datetime`                                        AS `create_datetime`,
       `u`.`modify_datetime`                                        AS `modify_datetime`,
       `u`.`deleted_datetime`                                       AS `deleted_datetime`,
       `token`.`requester_device`                                   AS `requester_device`,
       `token`.`created_at`                                         AS `created_at`
from (((`user` `u` join `user_connector` `uc` on ((`u`.`id` = `uc`.`user_id`))) left join `pingong`.`user_docs` `doc` on ((`u`.`id` = `doc`.`user_id`)))
         left join (select `user_access_token`.`id`               AS `id`,
                           `user_access_token`.`user_id`          AS `user_id`,
                           `user_access_token`.`requester_device` AS `requester_device`,
                           `user_access_token`.`created_at`       AS `created_at`
                    from `user_access_token`
                    where `user_access_token`.`id` in
                          (select max(`user_access_token`.`id`)
                           from `user_access_token`
                           group by `user_access_token`.`user_id`)) `token`
                   on ((`u`.`id` = `token`.`user_id`)))
group by `u`.`id`;

 

그래서 view에서 조회하지않고 service단에서 각각 테이블에서 조회하는 방식으로 작업 진행예정입니다.

그런데 궁금한건 그렇게 바꿨을때 몇명의 데이터까지 커버가 가능하냐는건또 궁금하네요

 

728x90

+ Recent posts