Postgresql / PPAS/Query tuning

[완료]/* contentMonitoring.distr.selectAlbumInfoDistrList */

원샷원따봉 2022. 8. 29. 15:09
AS-IS
Total query runtime: 3 secs 66 msec.
TO-BE
Total query runtime: 1 secs 992 msec.
 
개선효과
45.15%

 

Tuning Parameter

set work_mem=300000

 

개선 포인트

AS-IS

->  Sort  (cost=10000097295.57..10000098308.15 rows=405034 width=151) (actual time=307.620..372.198 rows=324506 loops=3)"
"                          Output: a_1.insert_date, a_1.album_id, a_1.album_name, a_1.genre_large, a_1.genre_mid, a_1.genre_small, a_1.series_id_imcs, a_1.series_name, a_1.vod_type, a_1.music_cont_type, a_1.update_date"
"                          Sort Key: a_1.insert_date DESC"
"                          Sort Method: external merge  Disk: 48296kB"
"                          Buffers: shared hit=20793, temp read=24264 written=24328"
"                          Worker 0:  actual time=303.531..370.174 rows=320123 loops=1"
"                            Sort Method: external merge  Disk: 47192kB"
"                            Buffers: shared hit=6960, temp read=8028 written=8049"
"                          Worker 1:  actual time=303.256..373.003 rows=316048 loops=1"
"                            Sort Method: external merge  Disk: 45880kB"
"                            Buffers: shared hit=6704, temp read=7844 written=7865"

 

TO-BE

 ->  Sort  (cost=10000127110.87..10000129541.07 rows=972082 width=151) (actual time=895.304..973.512 rows=973519 loops=1)"
"                    Output: a_1.insert_date, a_1.album_id, a_1.album_name, a_1.genre_large, a_1.genre_mid, a_1.genre_small, a_1.series_id_imcs, a_1.series_name, a_1.vod_type, a_1.music_cont_type, a_1.update_date"
"                    Sort Key: a_1.insert_date DESC"
"                    Sort Method: quicksort  Memory: 255838kB"
"                    Buffers: shared hit=20713"

 

* 원본 쿼리

SELECT /* contentMonitoring.distr.selectAlbumInfoDistrList */
* FROM (
SELECT
   ALBUM_ID
, ALBUM_NAME
, GENRE_LARGE
, GENRE_MID
, GENRE_SMALL
, SERIES_ID_IMCS
, SERIES_NAME
, VOD_TYPE
, MUSIC_CONT_TYPE
, INSERT_DATE
, UPDATE_DATE
, COUNT(1) OVER() TOTAL_CNT
, ROW_NUMBER() OVER(ORDER BY INSERT_DATE DESC) AS RNUM
FROM  IMCSUSER.PT_LW_ALBUM_INFO A
WHERE  1=1
) A
WHERE A.RNUM BETWEEN 0 + 1 AND 0 + 20