들어가며
사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 프로젝트를 진행하면서, PostgreSQL을 잘 활용하기 위해서는 pgAdmin4를 잘 활용할 수 있어야겠다고 생각했습니다. 이번 시간에는 pgAdmin4에 대해 조금 더 자세히 알아보겠습니다.
ERD 그리기
예전 pgAdmin에서는 ERD를 바로 만들 수 없어서, 다른 툴을 활용했다고 합니다. 하지만 pgAdmin4에서는 ERD를 손쉽게 확인할 수 있습니다. 확인하고 싶은 DB를 선택하여 마우스 우측 클릭을 하면 아래와 같이 나옵니다.
위에서 Generate ERD를 클릭하면, 원하는 ERD를 확인할 수 있습니다.
Table 복사하기
pgAdmin을 활용해서 Table을 복사하는 방법을 알아보겠습니다. 먼저 pgAdmin에서 복사하고자 하는 테이블을 우클릭한 후 'Backup'을 클릭합니다.
그 후 General 탭에서 Filename은 작성하고 싶은 이름으로 작성하고, Format은 'Plain'으로 변경합니다.
변경했으면, 'Dump Options' 탭에서 'Only data' 혹은 'Only Schema'를 선택해야 합니다.
만약 Only data를 선택했다면 데이터만 복사하는 것이고, Only Schema를 선택했다면 테이블 구조를 복사하는 것입니다. 그렇기에 테이블과 데이터를 모두 복사하고 싶다면 한 번씩 선택해서 총 2번 진행해야 합니다.
위와 같이 선택했으면, 우측 아래에 있는 'Backup' 버튼을 누르면 DB를 백업할 수 있습니다. 그럼 만약 데이터가 모두 날아갔다면, 어떻게 백업한 DB를 복구시킬 수 있을까요? 이에 대해 알아보겠습니다.
이번에는 Restore를 클릭합니다.
여기서 Filename은 백업된 위치의 백업 파일을 선택하고 Restore 버튼을 클릭하면 됩니다.
pgAdmin4 실행계획 알아보기
작성한 쿼리의 실행계획을 알아보고 싶다면, 아래와 같이 작성하면 됩니다. 먼저 실행계획을 알아보기 위해 쿼리툴을 열어보겠습니다.
Option+⬆️+Q (Mac 기준) Alt+Shift+Q (윈도우)
- 쿼리툴 열기(Open the Query Tool in the current database)
위와 같은 단축키를 입력하면, 쿼리툴이 나올 것입니다. 여기서 실행계획을 알아보기 위해 질의 쿼리 앞에 EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) 쿼리를 추가해주면, 손쉽게 쿼리 실행계획을 비주얼 라이징 해서 볼 수 있습니다.
pgAdmin에서 실행계획에 대해 비주얼 라이징 해주기 때문에, 한눈에 실행계획을 알아볼 수 있습니다. 여기서 만약 실행계획을 더 좋은 UI로 확인하고 싶다면 아래의 사이트를 활용하면 됩니다.
위의 사이트를 활용하는 방법은 아래와 같습니다. 먼저 pgAdmin에서 실행계획을 작성했다면, Data Output으로 들어가면, 아래와 같이 QUERY PLAN에서 json 파일이 있을 것입니다.
json 파일에 담겨있는 모든 코드를 복사합니다.
그 후 explain.dalibo.com 사이트에서 Plan 부분에 복사한 json 내용을 붙여 넣고, 실행계획을 알고 싶은 Query문을 아래에 작성하면 됩니다. 다 작성했다면 Submit을 클릭합니다.
그럼 위와 같이 실행계획이 나오는 것을 확인할 수 있습니다.
마치며
앞으로도 팀의 발전을 돕는 개발자가 되기 위해 노력하려 합니다. 팀에 필요한 부분이 무엇일지 고민하면서, 팀에 도움이 된다면, 열심히 공부해서 실무에 적용할 수 있는 개발자가 되기 위해 노력하고 싶습니다. 팀의 성장에 기여할 수 있는 개발자가 되겠습니다.
참고 및 출처
'Project > 서버 개발' 카테고리의 다른 글
[Project] 프로젝트 삽질기13 (feat class-transformer) (0) | 2022.03.29 |
---|---|
[Project] 프로젝트 삽질기12 (feat 직렬화) (0) | 2022.03.29 |
[Project] 프로젝트 삽질기10 (feat bull 공식문서 정리) (0) | 2022.03.16 |
[Project] 프로젝트 삽질기9 (feat Queue, bull) (1) | 2022.03.15 |
[Project] 프로젝트 삽질기8 (feat ormConfig) (0) | 2022.03.15 |