TypeORM에서 logging 옵션 중 query 옵션을 사용해서 GET 메소드 API 호출 시 날라가는 쿼리의 실행 계획을 출력하고 시각화하였다.
SELECT "activity"."id" AS "activity_id", "activity"."created_at" AS "activity_created_at",
"activity"."title" AS "activity_title", "activity"."content" AS "activity_content",
"activity"."subject" AS "activity_subject", "activity"."end_date" AS "activity_end_date",
"activity"."images" AS "activity_images", "activity"."files" AS "activity_files",
"activity"."type" AS "activity_type", "groupActivity"."id" AS "groupActivity_id",
"groups"."id" AS "groups_id", "groups"."name" AS "groups_name" FROM "activity"
"activity" LEFT JOIN "group_activity" "groupActivity"
ON "groupActivity"."activity_id"="activity"."id"
AND ("groupActivity"."activity_id" = "activity"."id")
LEFT JOIN "group" "groups" ON "groups"."id"="groupActivity"."group_id"
AND ("groups"."id" = "groupActivity"."group_id") WHERE "activity"."id" = 7;
PostgreSQL에서는 쿼리 앞에 EXPLAIN ANALYZE 쿼리를 추가하여 해당 쿼리의 실행 계획과 실행 시간을 출력할 수 있다.
쿼리 실행 계획 시각화하기
TypeORM에서 logging 옵션 중 query 옵션을 사용해서 GET 메소드 API 호출 시 날라가는 쿼리의 실행 계획을 출력하고 시각화하였다.
PostgreSQL에서는 쿼리 앞에 EXPLAIN ANALYZE 쿼리를 추가하여 해당 쿼리의 실행 계획과 실행 시간을 출력할 수 있다.
해당 실행 계획을 시각화하는 방법에는 여러가지가 있다.
가장 쉬운 방법은 출력한 실행 계획과 실행 시간을 Dalibo에 복사/붙여넣기하면 자동적으로 시각화를 해준다.
Submit을 클릭하면 알아서 자동적으로 아래처럼 시각화를 해준다.
어디서 비용이 얼마나 발생하고, 몇 개의 row가 필터링 되는지, 시간은 얼마나 걸리는지 한눈에 알아보기가 쉽다.
DataGrip의 경우, 따로 EXPLAIN ANALYZE 쿼리를 추가하지 않고, 해당 쿼리 위에 마우스를 놓은 상태에서 우클릭을 통해 Explain Plan을 클릭하여 복사/붙여넣기 없이 시각화를 한번에 할 수 있다.
'개발 > PostgreSQL' 카테고리의 다른 글