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