이 섹션에서는 다음 수준의 저장 형식을 설명합니다. 파일 및 디렉터리.
데이터베이스 클러스터에 필요한 모든 데이터는 데이터베이스 클러스터에 저장됩니다. 일반적으로 다음과 같이 참조되는 클러스터의 데이터 디렉터리입니다.PGDATA(환경 변수 이름 뒤) 정의하는 데 사용할 수 있습니다.) 의 공통 위치PGDATA이다/var/lib/pgsql/data. 여러 클러스터, 관리됨 서로 다른 서버 인스턴스로 동일한 시스템에 존재할 수 있습니다.
그PGDATA디렉토리에는 여러 개가 포함되어 있습니다. 하위 디렉터리 및 제어 파일(그림 참조)표 52-1. 이러한 필수 항목 외에도 클러스터 구성 파일postgresql.conf, pg_hba.conf및pg_ident.conf전통적으로 다음 위치에 저장됩니다.PGDATA(비록포스트그레SQL8.0 이상에서는 다음이 가능합니다. 다른 곳에 보관하세요).
표 52-1. 의 내용PGDATA
| 항목 | 설명 |
|---|---|
| PG_VERSION | 다음의 주요 버전 번호를 포함하는 파일PostgreSQL |
| 베이스 | 데이터베이스별 하위 디렉토리 하위 디렉터리 |
| 글로벌 | 다음과 같은 클러스터 전체 테이블을 포함하는 하위 디렉토리pg_database |
| pg_clog | 트랜잭션 커밋 상태를 포함하는 하위 디렉토리 데이터 |
| pg_multixact | 다중 트랜잭션 상태 데이터가 포함된 하위 디렉토리 (공유 행 잠금에 사용됨) |
| pg_subtrans | 하위 거래 상태를 포함하는 하위 디렉토리 데이터 |
| pg_tblspc | 다음에 대한 기호 링크를 포함하는 하위 디렉토리 테이블스페이스 |
| pg_twophase | 준비된 상태 파일을 포함하는 하위 디렉토리 거래 |
| pg_xlog | WAL(미리 로그 쓰기)을 포함하는 하위 디렉토리 파일 |
| postmaster.opts | 서버의 명령줄 옵션을 기록하는 파일 마지막으로 시작되었습니다. |
| postmaster.pid | 현재 서버 PID를 기록하는 잠금 파일 및 공유 메모리 세그먼트 ID(서버 이후에는 존재하지 않음) 종료) |
클러스터의 각 데이터베이스에는 하위 디렉토리가 있습니다 이내PGDATA/베이스, 데이터베이스의 OID를 따서 명명됨pg_database. 이 하위 디렉터리는 데이터베이스 파일의 기본 위치. 특히 그 시스템 카탈로그가 여기에 저장됩니다.
각 테이블과 인덱스는 다음과 같은 이름의 별도 파일에 저장됩니다. 테이블 또는 인덱스파일 노드번호, 다음에서 찾을 수 있습니다.pg_class.relfilenode.
| 주의 |
|
테이블의 파일 노드는 종종 테이블의 파일 노드와 일치한다는 점에 유의하십시오. OID는요아님반드시 해당 경우입니다. 다음과 같은 일부 작업잘라내기, REINDEX, 클러스터및 일부 형태의테이블 변경, 파일 노드를 변경할 수 있는 동안 OID를 보존합니다. 파일 노드와 테이블 OID는 동일합니다. |
테이블이나 인덱스가 1GB를 초과하면 다음으로 나뉩니다. 기가바이트 크기세그먼트. 첫 번째 세그먼트의 파일 이름은 파일 노드와 동일합니다. 후속 세그먼트의 이름은 filenode.1, filenode.2 등으로 지정됩니다. 파일 크기 제한이 있는 플랫폼에서의 문제를 방지합니다. 는 테이블과 인덱스의 내용은 다음에서 자세히 설명합니다.섹션 52.3.
잠재적으로 큰 항목이 있는 열이 있는 테이블은 관련이 있습니다토스트테이블입니다. 너무 큰 필드 값을 라인 외부에 저장하는 데 사용됩니다. 테이블 행을 적절하게 유지합니다.pg_class.reltoastrelid테이블에서 해당 테이블로의 링크토스트테이블(있는 경우). 참조섹션 52.2더 보기 정보.
테이블스페이스는 시나리오를 더욱 복잡하게 만듭니다. 각각 사용자 정의 테이블스페이스에는 내부에 심볼릭 링크가 있습니다.PGDATA/pg_tblspc디렉토리는 물리적 테이블스페이스 디렉토리를 가리킵니다(예: 해당에 지정됨테이블스페이스 생성명령). 심볼릭 링크의 이름은 테이블스페이스의 OID를 따라 지정됩니다. 물리적 테이블스페이스 디렉터리 내부에는 하위 디렉터리가 있습니다. 테이블스페이스에 요소가 있는 각 데이터베이스에 대해 데이터베이스의 OID 뒤에. 해당 디렉토리 내의 테이블은 다음을 따릅니다. 파일 노드 명명 체계. 그만큼pg_default테이블스페이스는 다음을 통해 액세스되지 않습니다.pg_tblspc, 그러나 다음과 일치함PGDATA/베이스. 마찬가지로,pg_global테이블스페이스에 액세스되지 않았습니다. 통해pg_tblspc, 그러나 다음에 해당함PGDATA/글로벌.