전체 글
-
[완료]/*VoteRelation.base.selectAlbumList*/Postgresql / PPAS/Query tuning 2022. 8. 29. 14:27
AS-IS 20 sec TO-BE 17 ms 개선 효과 : 99.91% * 원본 쿼리 SELECT /*VoteRelation.base.selectAlbumList*/ A.TOTAL_CNT , A.RNUM , A.ALBUM_ID , A.ALBUM_NAME , TO_CHAR(TO_TIMESTAMP(A.ALBUM_DATE, 'YYYYMMDDHH24MISS'), 'YYYY-MM-DD') ALBUM_DATE FROM ( SELECT /*+ LEADING(AI) INDEX(AI PK_PT_LA_ALBUM_INFO) USE_NL(AI S)*/ AI.ALBUM_ID , AI.ALBUM_NAME , AI.ALBUM_DATE , COUNT(AI.ALBUM_ID) OVER() AS TOTAL_CNT , ROW_NUMBER(..
-
[완료]/*contentExpand.distr.selectExposureNewScheduleList*/Postgresql / PPAS/Query tuning 2022. 8. 29. 14:17
[튜닝 결과] 튜닝 전 : 2.7초 튜닝 후 : 0.3초 개선효과 : 88% [튜닝 내용] 튜닝 후 sql 줄번호 209 ~ 216 참고 조건을 초기 필터 조건으로 추가하여 GROUP BY 대상을 줄임. 218663 건을 70건으로 줄임 * 원본 쿼리 SELECT /*contentExpand.distr.selectExposureNewScheduleList*/ * FROM( SELECT AA.SCHEDULE_ID, AA.SCHEDULE_TYPE, AA.SCHEDULE_TITLE, AA.SCREEN_TYPE_LIST, CASE WHEN SUBSTR(AA.SCREEN_TYPE_LIST, 1, 1) = '1' THEN 'I' WHEN SUBSTR(AA.SCREEN_TYPE_LIST, 2, 1) = '1' AND..
-
[완료]/*album.base.deleteMultiSeriesCategoryMap*/Postgresql / PPAS/Query tuning 2022. 8. 29. 14:06
AS-IS Total query runtime: 10000 msec TO-BE Total query runtime: 0.063 msec 개선효과 : 99% - 분석 내용 튜닝 내용 : WHERE ( A.VOD_CATEGORY_ID, A.VOD_CONTENTS_ID) IN 해당 분분에서 인덱스를 타지 못함 EXISTS 로 변경요청 * 원본 쿼리 DELETE FROM /*album.base.deleteMultiSeriesCategoryMap*/ voduser.PT_VO_CATEGORY_MAP_UNITED A WHERE ( A.VOD_CATEGORY_ID, A.VOD_CONTENTS_ID) IN ( SELECT BB.VOD_CATEGORY_ID, BB.VOD_CONTENTS_ID FROM voduser.PT_..
-
[완료]/* categoryForm.base.getAlbumNameSearchList */Postgresql / PPAS/Query tuning 2022. 8. 29. 13:37
AS-IS Total query runtime: 6 secs 719 msec TO-BE Total query runtime: 4 secs 813 msec 개선효과 : 28% Costs 높은 문제의 NODE -> Index Scan using pk_pt_la_album_info on imcsuser.pt_la_album_info alb_info_1 (cost=0.42..48673.03 rows=100 width=57) (actual time=2.095..500.890 rows=5143 loops=1)" " Output: alb_info_1.album_id, alb_info_1.album_name, alb_info_1.album_date, alb_info_1.series_id, alb_info_1.serie..
-
[완료]/*distribute.distr.distributeListStatusPageData*/Postgresql / PPAS/Query tuning 2022. 8. 29. 13:33
AS-IS 실행 완료. 총 쿼리 실행시간: 12 secs 226 msec. TO-BE 실행 완료. 총 쿼리 실행시간: 3 secs 774 msec. 개선효과 : 약 75% 개선 * 튜닝 쿼리 SELECT * /*distribute.distr.distributeListStatusPageData*/ FROM ( SELECT COUNT(AA.ALBUM_ID) OVER() AS TOTAL_CNT, ROW_NUMBER() OVER (ORDER BY AA.ALBUM_ID, AA.ASSET_SN, AA.ASSET_TYPE) AS RNUM, AA.ALBUM_ID, AA.ASSET_TYPE, AA.ASSET_SN, AA.ASSET_ID, AA.MAT_NAME, AA.GENRE_LARGE, AA.GENRE_MID, AA...
-
[ 완료]/*new4dSchedule.distr.new4dScheduleListPageData*/Postgresql / PPAS/Query tuning 2022. 8. 29. 13:25
-- 개선 결과 AS-IS Total query runtime: 1 secs 969 msec. TO-BE Total query runtime: 511 msec. * 분석 내용 -- 해당 쿼리는 4개 쿼리를 inner join 하고 1개 테이블을 Outer Join 해서 가져오는 쿼리로 Outer join 쿼리로 인해 늦어지는 쿼리 -- Outer 대상 imcsuser.PT_LW_SCHE_PROCESS_INFO 테이블 사용하지 않기 때문에 제거. * 원본 쿼리 SELECT /*new4dSchedule.distr.new4dScheduleListPageData*/ TOTAL_CNT , RNUM , SCHEDULE_ID , SEQ_NO , CONTENTS_NAME , PRESET_CODE , PRESET_SEQ..
-
[완료]/*abtest.categoryForm.base.getAlbumNameInSeriesAlbum*/Postgresql / PPAS/Query tuning 2022. 8. 29. 12:15
AS-IS 실행 완료. 총 쿼리 실행시간: 12 secs 714 msec. TO-BE 실행 완료. 총 쿼리 실행시간: 5 secs 405 msec. 개선효과 : 약 59% 개선 -- 세션 튜닝 파라미터 set work_mem=312000 * 튜닝 쿼리 with CATE_MAP as ( SELECT VIEWING_FLAG, CONTENTS_ID FROM( SELECT VOD_VIEWING_FLAG VIEWING_FLAG, VOD_CONTENTS_ID CONTENTS_ID, '' AS STAT_FLAG FROM VODUSER.PT_VO_CATEGORY_MAP_UNITED a where not exists (select A.VOD_VIEWING_FLAG VIEWING_FLAG, A.VOD_CONTENTS_ID..
-
[완료]/* cuesheet.base.getCueSheetItemDetailForLayer */Postgresql / PPAS/Query tuning 2022. 8. 29. 12:09
Select 절 내의 스칼라 서브 쿼리를 JOIN문으로 대처 AS-IS 2.5 sec TO-BE 150ms 원본 쿼리 SELECT /* cuesheet.base.getCueSheetItemDetailForLayer */ ROW_NUMBER() OVER ( ORDER BY TO_NUMBER(DTL.CAM_NO) ) as no, DTL.CUESHEET_ID AS cuesheet_id, DTL.ITEM_NO AS item_no, DTL.OMNIV_NO AS omniv_no, DTL.OMNIV_TYPE AS omniv_type, DTL.CAM_NO AS cam_no, DTL.ALBUM_ID AS album_id, ( SELECT AI.ALBUM_NAME FROM imcsuser.PT_LA_ALBUM_INFO A..