일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 다중 컬럼 NOT IN
- 램프 파이썬
- SWEA
- 백준 1238 파티 파이썬
- 가장 긴 바이토닉 부분 수열 파이썬
- 백준 1613 역사
- 백준 1043 거짓말 파이썬
- 백준 1034 램프 파이썬
- 가장 긴 팰린드롬 파이썬
- 백준 2352 반도체 설계 파이썬
- 백준 2146 다리 만들기
- 프로그래머스 베스트앨범
- 다리 만들기 파이썬
- SQL SERVER 장비교체
- 반도체 설계 파이썬
- 프로그래머스 여행경로
- 백준 1516 게임 개발
- 게임 개발 파이썬
- 등굣길 파이썬
- 프로그래머스 가장 긴 팰린드롬
- 프로그래머스 순위 파이썬
- 역사 파이썬
- 프로그래머스 순위
- 백준 11054.가장 긴 바이토닉 부분 수열
- 순위 파이썬
- 트리의 지름 파이썬
- 백준 1167 트리의 지름 파이썬
- SQL SERVER MIGRATION
- 베스트앨범 파이썬
- 프로그래머스 등굣길
Archives
- Today
- Total
공부, 기록
[postgreSQL] 아키텍처와 Shared Buffer 본문
해당 글은 postgreSQL 9.6 성능이야기 책을 읽고 이해한 내용을 정리하였습니다.
아키텍처
postgreSQL은 기본적으로 멀티 프로세스로 수행되는 구조로 다음과 같다.
각 구조별 역할은 다음과 같다.
- postmaster 프로세스
PostgreSQL을 기동할 때 가장 먼저 시작되는 프로세스로 복구 작업, 메모리 초기화, 백그라운드 프로세스 구동 작업 등을 수행하며 클라이언트의 연결 요청을 받아 Backend 프로세스를 생성 및 할당한다. - postgres (backend) 프로세스
max_connections 파라미터로 수를 조정하며 클라이언트의 쿼리 요청을 수행한 후 결과를 리턴해준다. 즉 쿼리를 수행하기 위한 메모리 구조를 필요로하며 이를 로컬 메모리라 칭한다. 로컬 메모리에는 work_mem 파라미터, maintenance_work_mem 파라미터, temp_buffers 파라미터 등이 있다. - background 프로세스
postgreSQL을 동작시키는데 필요한 주요 프로세스들이 포함되어 있다.
logger - 에러 메시지를 로그 파일에 기록.
checkpointer - 체크포인트 발생 시 더티 버퍼를 파일에 기록.
writer - 주기적으로 더티 버퍼를 파일에 기록.
wal writer - WAL 버퍼를 WAL 파일에 기록
autovaccum launcher - Vaccum이 필요한 시점에 autovacuum worker를 fork
archiver - 아카이브 모드로 설정된 경우 WAL 파일을 지정된 경로로 복사.
stats collector - 세션 수행 정보와 테이블 통계 정보 등을 수집. - 공유 메모리
WAL 버퍼 : WAL LOG 를 기록하는 영역. WAL 로그는 복제, 복구, 백업 및 복원 등에 사용된다
Shared 버퍼 : DISK I/O를 줄이기 위한 메모리 영역
CLOG 버퍼 : 트랜잭션의 메타 정보를 가지는 버퍼. 어떤 트랜잭션이 완료되고 실행중인지 등을 기록한다.
데이터 파일
각각의 개체는 oid 값으로 디렉토리에 저장이되어 oid 값을 기준으로 찾아야한다.
테이블은 heap 형태로 저장이되고 HEAP 안에는 Block(Page)으로 구성되어 있고 Block 안에는 Tuple이 존재한다.
또한 테이블 스페이스를 지정할 수 있으며 디렉토리에 맵핑을 할 수 있는데 이를 통해 테이블별 디렉토리를 나눠서 관리할 수 있다. 테이블 스페이스를 생성하면 내부적으로 pg는 심볼릭 링크를 생성한다.
'공부 > DATABASE' 카테고리의 다른 글
[postgreSQL] 인덱스 스캔 방법 (0) | 2024.08.25 |
---|---|
SQL Server, MySQL , PostgreSQL 플랜캐시 (0) | 2024.07.20 |
[AWS] Aurora 공부 2 (Aurora의 기능들) (0) | 2024.07.06 |
[AWS] Aurora 공부 1 (아키텍처와 특징) (0) | 2024.07.04 |
[SQL SERVER] 페이징 쿼리 (0) | 2024.06.19 |