Postgresql / PPAS/Query tuning
-
[완료]/*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..
-
[완료] /* content.base.seriesListPageData */Postgresql / PPAS/Query tuning 2022. 8. 29. 11:57
개선 포인트 AS-IS 수행결과 Total rows: 1000 of 4534 Query complete 00:00:03.300 Ln 153, Col 7 TO-BE 수행결과 Query complete 00:00:01.600 특별히 개선할 포인트가 없지만, 불필요한 구문을 제거하여, 50% 정도의 수행 시간 단축 효과가 있었음. * 원본 SQL SELECT /* content.base.seriesListPageData */ ROW_NUMBER() OVER (ORDER BY AI.CREATE_DATE DESC, AI.SERIES_ID_IMCS, AI.SCREEN_TYPE ) RNUM, AI.SERIES_ID_IMCS, AI.ALB_SER_TYPE, ALP.ALBUM_ID, AI.SERIES_NAME, AI.S..
-
[완료]/* abtest.content.base.popupAbtestFormRouteListPageDataSeries */Postgresql / PPAS/Query tuning 2022. 8. 29. 11:52
* 개선 포인트 AS-IS 수행 시간 : 10초 내외 TO-BE 수행 시간 : - 분석 결과 : 2개의 recursive 쿼리 중 하단에 있는 recursive 를 제외하고 수행할 경우 0.2초 내외로 수행됨. 하단 recursive 영역에 대한 변경이 필요 하단 recursive 쿼리는 아래와 같다. 원본 쿼리 SELECT /* abtest.content.base.popupAbtestFormRouteListPageDataSeries / BB.RNUM, BB.TEST_ID, BB.VARIATION_ID, BB.CONTENTS_ID, BB.CONTENTS_NAME, BB.CATEGORY_NAME, BB.CATEGORY_ID, BB.PARENT_CATEGORY_ID, BB.CREATE_DATE, BB.CAT..