- 애플리케이션에 잦은 데이터 업데이트가 필요한 경우 PostgreSQL이 더 나은 선택입니다. 그러나 데이터를 자주 읽어야 하는 경우에는 MySQL을 사용하는 것이 좋습니다
- 쓰기 성능 MySQL은 쓰기 잠금을 사용하여 실제 동시성을 구현합니다. 예를 들어 한 사용자가 테이블을 편집하는 경우 다른 사용자가 테이블을 변경하려면 작업이 완료될 때까지 기다려야 할 수 있습니다.
- 그러나 PostgreSQL에는 읽기-쓰기 잠금이 없는 다중 버전 동시성 제어(MVCC) 지원이 내장되어 있습니다. 따라서 쓰기 작업이 빈번하고 동시에 수행되는 경우 PostgreSQL 데이터베이스이가 더 잘 작동합니다.
- 읽기 성능 PostgreSQL은 데이터베이스에 연결된 모든 사용자에 대해 상당한 메모리 할당량(약 10MB)을 포함하는 새로운 시스템 프로세스를 생성합니다. 여러 사용자를 위해 확장하려면 메모리 집약적 리소스가 필요합니다.
- 반면 MySQL은 여러 사용자를 위해 단일 프로세스를 사용합니다. 따라서 MySQL 데이터베이스는 주로 데이터를 읽고 사용자에게 표시하는 애플리케이션에서PostgreSQL보다 성능이 뛰어납니다.
- https://aws.amazon.com/ko/compare/the-difference-between-mysql-vs-postgresql/
https://yahwang.github.io/posts/mysql-vs-postgres
https://dunedine.tistory.com/21
https://rianshin.tistory.com/68
https://velog.io/@33bini/PostgreSQL-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4
여러 DB Instance들이 있고, 정보를 조회나 Query 실행 대상 DB Instance를 변경할 때 사용한다.
\c [DB Name] [Connection User}
현재 접속한 DB에서 여러 목록 정보를 조회(단, \list, \du는 접속한 DB와 무관하게 동작)할 때 사용
- \list(or \l) : 전체 Database Instance 목록
- \dt : 접속한 DB Instance의 Table 목록
- \ds : Sequence 목록
- \df : Function 목록
- \dv : View 목록
- \du : User 목록
\d [table name]
- \g : 방금 전에 실행했던 명령어를 실행. (↑ 키가 사용 가능한 경우 쓰일 일은 없다.)
'\g' 사용예 : 별다른 Query문 없이 이전에 실행한 Query와 동일한 Query가 실행된다.
- \s : 이전에 실행했던 명령어 전체 List 조회.
'\s' 사용예 : 이전에 실행 내역 전체 나열. 예에서는 마지막 2개의 실행 내역 포함해서 전체를 나열.
- \h : SQL command 관련 도움말
- \? : psql Command 관련 도움말
- \x : Column들을 한줄로 조회하기 힘들 때, Column을 세로로 배치해서 Display하는 기능 on/off.
'\x' 사용예 : Column이 H-Scroll 넘겨 생성될 때 유용. 단, 조회 목록 숫자를 조정할 필요가 있음.
- \a : Column Align on/off. Default는 Align On 상태.
'\a' 사용예 : Default는 Align On 상태. \a를 실행하면 Off 되면서 아래와 같이 Space에 의한 Align 기능이 사라짐.
- \H(대문자 유의) : Column 명과 결과 값을 HTML Table 형식으로 Display하는 기능 on/off
'\H' 사용예 : HTML의 <table> tag를 활용해서 출력하고 있다.
Query 실행 시간 Display 기능을 on/off 한다. 주로 Query Tuning할 때 실행 시간 확인시 사용한다.
길고 복잡한 Query같은 경우 외부 편집기에서 Query를 작성한 후에 실행하는 것이 편하기 때문에, 파일에 쓰여진 Query를 실행하는 명령어 이다.
/i [File Name]
'/i' 사용예 : test.sql에 있는 Query문을 psql 에서 실행 시킨 예.
- \e : \i가 이미 만들어진 File 안에 있는 Query를 수행하는데 비해, \e는 외부 편집기를 통해 Query를 작성해서 실행할 때 사용한다. Linux에서는 vi가, Window에서는 메모장이 Default Editor로 실행된다.
- \ef : \e와 유사하나 FUNCTION 편집할 때 사용한다는 측면에서 상이하다. (view를 편집할 때 사용하는 \ev도 있다.)
\e [file name]
\ef [function name]
Remark : '\e'의 뒤에 [File Name]을 생략하면 Buffer를 통해 작성하게 되고, 실행후에는 작성한 Query가 사라지게 된다. 만약 존재하지 않는 File Name을 사용하면 신규로 파일이 만들어 지는 것이 아니라 오류가 발생하며 종료된다.(*)
'\e' 사용예 : \e를 실행하면 vi editor로 전환되고, Query 작성 후에 :wq로 빠져나오면 psql에서 Query가 실행되는 예이다.
psql에서 shell command를 실행할 때 사용한다. 주로 화면을 지우거나 '\i', '\e' command를 위해 현재 경로에 있는 파일 List를 조회하거나 Path를 변경할 때 사용한다. (!뒤에 한 칸의 공백이 있음을 유의하자)
12. \q : psql 종료
https://donglnemo.tistory.com/54
'Wecode -기업협업 인턴 (부트캠프) > 기업협업 독학, 공부' 카테고리의 다른 글
Query Builder (with 제품목록 페이지) ** (0) | 2023.11.01 |
---|---|
typescript 구조 문법 (0) | 2023.11.01 |
nest.js: useGuards, useInterceptors (0) | 2023.10.31 |
@nestjs/swagger 패키지,, @apiquery, @apiparams 데코레이터, 언제 @apiquery를 쓰고 언제 @apiparams를 쓰니 (0) | 2023.10.31 |
NestJS (0) | 2023.10.31 |